营业额统计
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e7;
int n, x, res;
struct node {
int val;
node *l, *r;
node (int x) {
this->val = x;
l = r = NULL;
}
};
node *root;
void insert(node* &u, int x) {
if (u == NULL) {
u = new node(x);
}
else if (x > u->val) insert(u->r, x);
else if (x < u->val) insert(u->l, x);
}
int get_prev(node* &u, int x) {
if (u == NULL) return -INF;
else if (x == u->val) return x;
else if (x < u->val) return get_prev(u->l, x);
else return max(u->val, get_prev(u->r, x));
}
int get_post(node* &u, int x) {
if (u == NULL) return INF;
else if (x == u->val) return x;
else if (x > u->val) return get_post(u->r, x);
else return min(u->val, get_post(u->l, x));
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i ++) {
scanf("%d", &x);
if (i == 1) res += x;
else {
int t1 = get_post(root, x);
int t2 = get_prev(root, x);
res += min(t1 - x, x - t2);
}
insert(root, x);
}
printf("%d", res);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N =