[HNOI2002]营业额统计
stl::set
题解:
就是一边插入一边找前驱和后继。
直接set就行了。
Code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
const int INF = 0x3f3f3f3f;
set<int> s;
set<int>::iterator p;
int main(){
int ans=0,n,x,a;
cin>>n;
cin>>a; s.insert(a); ans+=a;
for(int i=2;i<=n;i++){
x=INF; cin>>a;
p=s.lower_bound(a);
if(p!=s.end()){ x=min(x,*p-a); }
if(p!=s.begin()){ x=min(x,a-(*--p)); }
ans+=x; s.insert(a);
}
cout<<ans<<endl;
}