连O(n^2)的玄学方法都能过,数据太水了吧。
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int k=0;bool f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=0;ch=getchar();}
while(isdigit(ch)){k=(k<<1)+(k<<3)+(ch^48);ch=getchar();}
return f?k:-k;
}
void print(int x){if(x>9)print(x/10);putchar(x%10+48);}
vector<int>v;
int n,ans;
int main(){
n=read();
v.push_back(read());
ans+=v[0];
for(int i=1;i<n;i++)
{
int x=read(),anx=INT_MAX;
int p=lower_bound(v.begin(),v.end(),x)-v.begin();
if(p!=0) anx=min(anx,x-v[p-1]);
if(p<v.size()) anx=min(anx,v[p]-x);
v.insert(lower_bound(v.begin(),v.end(),x),x);
ans+=anx;
}
print(ans);
return 0;
}