#define _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;
long long sum;
int x,n;
list<int>L;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (i == 0) {
L.push_back(x);
sum += abs(x);
}
else {
if (x >= L.back()) {
sum += abs(x-L.back());
L.push_back(x);
}
else {
if (x < L.front()) {
sum += abs(x - L.front());
L.push_front(x);
}
else {
auto it = L.end();
while ((--it) != L.begin()) { if (x < *it)break; }
int m1 = abs(x - *it);
it--;
int m2 = abs(x - *it);
it ++ ;
sum += min(m1, m2);
L.insert(it, x);
}
}
}
//cout <<"sum:" << sum << endl;
//cout << "L.front()=" << L.front()<<endl;
}
cout << sum;
}
和第一篇题解的思路应该一样的,看不出哪里错