RT,不知道bug在哪,悬关
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
long long n,ai,c1,c2;
vector<pair<long long,long long> > a;
bool cmd(pair<long long,long long> t1,pair<long long,long long> t2){
if(t1.first==t2.first){
return t1.second<t2.second;
}
return t1.first<=t2.first;
}
long long _abs(long long x){
if(x<0)return -x;
return x;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
a.push_back(make_pair(-1000000009,10000009));
a.push_back(make_pair(1000000009,10000009));
for(register int i=1;i<=n;i++){
cin>>ai;
int it=upper_bound(a.begin(),a.end(),make_pair(ai,0),cmd)-a.begin();
c1=_abs(a[it].first-ai);
c2=_abs(a[it-1].first-ai);
if(i==1){
a.insert(upper_bound(a.begin(),a.end(),make_pair(ai,0),cmd),make_pair(ai,i));
continue;
}
if(c1<c2){
cout<<c1<<' '<<a[it].second<<'\n';
}
else if(c1==c2){
cout<<c1<<' '<<min(a[it].second,a[it-1].second)<<'\n';
}
else if(c1>c2){
cout<<c2<<' '<<a[it-1].second<<'\n';
}
if(a[it].first!=ai && a[it-1].first!=ai){
a.insert(upper_bound(a.begin(),a.end(),make_pair(ai,i),cmd),make_pair(ai,i));
}
}
return 0;
}