1588: [HNOI2002]营业额统计
用set水掉
BZOJ 1588
/**************************************************************
Problem: 1588
User: Dream_Tonight
Language: C++
Result: Accepted
Time:188 ms
Memory:1952 kb
****************************************************************/
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <string>
#include <cstdio>
#include <cmath>
#include <stack>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e5 + 7;
const int inf = 0x7f7f7f7f;
set<int> st;
int ans;
int main() {
int n, x;
st.insert(1<<28);
st.insert(-(1<<28));
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &x);
if (i == 0) {
ans = x;
} else {
set<int>::iterator it = st.lower_bound(x);
int y = *(it), z = *(--it);
ans += min(abs(x - z), abs(x - y));
}
st.insert(x);
}
printf("%d\n", ans);
}