wa第一个点,后面tle了,求大佬解答
#include <bits/stdc++.h>
#define N 100005
#define int long long
using namespace std;
int n;
struct T{
int x,id;
}a[N];
int cha(int j,int k){
return abs(j-k);
}
T fz(int l,int r,int k){
if(r-l+1==2){
if(cha(a[l].x,k)==cha(a[r].x,k)){
return a[l].id<a[r].id?a[l]:a[r];
}
return cha(a[l].x,k)<cha(a[r].x,k)?a[l]:a[r];
}
if(r-l+1==1)return a[l];
T s=fz(l,(l+r)/2,k);
T t=fz((l+r)/2+1,r,k);
if(cha(s.x,k)==cha(t.x,k)){
return s.id<t.id?s:t;
}
return cha(s.x,k)<cha(t.x,k)?s:t;
}
signed main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i].x;
a[i].id=i;
}
cout << abs(a[2].x-a[1].x) << " " << 1 <<endl;
for(int i=3;i<=n;i++){
T y=fz(1,i-1,a[i].x);
cout << abs(y.x-a[i].x) << " " << y.id << endl;
}
return 0;
}
/*
5
-5 4 -3 -2 1
*/