M题为什么这样过不了?
#include<bits/stdc++.h>
using namespace std;
#define int long long
pair<int,int>a[202020];
int b[202020];
signed main(){
int n,i;
cin>>n;
for(i=0;i<n;i++){
cin>>a[i].first,a[i].second=i;
b[i]=a[i].first;
}
//a[n].first=2e9; //把这个注释掉了
sort(a,a+n);
int l=a[0].second,r=a[0].second;
int ma=max(a[0].first*2,a[n-1].first);
int res=ma-min(a[0].first*2,a[1].first);
for(i=1;i<n;i++){
while(a[i].second<l){
l--;
ma=max(ma,b[l]*2);
}
while(a[i].second>r){
r++;
ma=max(ma,b[r]*2);
}
if(i==n-1)res=min(res,a[n-1].first*2-a[0].first*2);//这里改了
else res=min(res,ma-min(a[0].first*2,a[i+1].first));
}
cout<<res;
}
兰子的题解,只改了注释的两个地方,感觉好像和兰子的题解一模一样,但是只能过97%。求助 :(