有TLE也有WA,想不明白为什么啊
#include<bits/stdc++.h>
using namespace std;
const int M = 32767;
const int N = 1e6+6;
int a[M],n;
int tong[N];
set<int> s;
long long ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
tong[a[i]]++;
s.insert(a[i]);
if(i==1) ans+=a[i];
if(i==2) ans+=abs(a[1]-a[2]);
if(i>2)
{
set<int>::iterator it1=s.upper_bound(a[i]);
int min1=abs(*it1-a[i]);
set<int>::iterator it2=s.lower_bound(a[i]);
it2--;
int min2=abs(a[i]-*it2);
if(tong[a[i]]>1) continue;
if(it1==s.end()) {ans+=min2;continue;}
ans+=min(min1,min2);
}
}
printf("%lld",ans);
return 0;
}