我坑队友了...注意开long long...题很水wa了17次还没过,智商不够了...
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
long long int a[100001];
struct lane
{
long long int num;
int id;
} room[100001];
bool cmp(lane &a,lane &b)
{
if(a.num==b.num) return a.id<b.id;
else return a.num>b.num;
}
int main()
{
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
room[i].num=a[i];
room[i].id=i;
}
sort(room+1,room+n+1,cmp);
if(room[1].num-room[2].num==1) cout<<room[1].num<<endl;
else if(room[1].num-room[2].num>=2)
{
if((room[1].num-a[room[1].id-1]==2)&&room[1].id==n)
{
cout<<room[1].num<<endl;
}
else if((room[1].num-a[room[1].id+1]==2)&&room[1].id==1) cout<<room[1].num<<endl;
else if((room[1].num-a[room[1].id-1]==2)&&room[1].num-a[room[1].id+1]==2)
{
cout<<room[1].num<<endl;
}
else cout<<room[1].num-1<<endl;
}
else
{
if(room[2].num>room[3].num)//lianggeshu
{
if(room[2].id-room[1].id==1)
{
if(room[1].id!=1&&room[1].num-a[room[1].id-1]>=2) cout<<room[1].num<<endl;
else if(room[2].id!=n&&room[2].num-a[room[2].id+1]>=2) cout<<room[1].num<<endl;
else cout<<room[1].num+1<<endl;
}
else
{
//cout<<"?"<<endl;//10
//11 7 9 11 10 9 7 1 9 9
if(room[1].num-a[room[1].id-1]>=2&&room[1].id!=1) cout<<room[1].num<<endl;
else if(room[2].num-a[room[2].id+1]>=2&&room[2].id!=n) cout<<room[1].num<<endl;
else if(room[1].num-a[room[1].id+1]>=2||room[2].num-a[room[2].id-1]>=2) cout<<room[1].num<<endl;
else if(room[2].id==n&&a[n-1]!=0) cout<<room[1].num+1<<endl;
else if(room[1].id==1&&a[2]!=0) cout<<room[1].num+1<<endl;
else if(a[room[1].id-1]!=0||a[room[1].id+1]!=0) cout<<room[1].num+1<<endl;
else if(a[room[2].id-1]!=0||a[room[2].id+1]!=0) cout<<room[1].num+1<<endl;
else if(room[1].num==1) cout<<"2"<<endl;
else cout<<room[1].num-1<<endl;
}
}
else
{
long long int k=1;
while(room[k].num==room[1].num)
{
if(a[room[k].id-1]!=0&&room[k].id!=1)
{
cout<<room[1].num+1<<endl;
return 0;
}
if(a[room[k].id+1]!=0&&room[k].id!=n)
{
cout<<room[1].num+1<<endl;
return 0;
}
k++;
}
k--;
k--;
long long int ans=k*room[1].num;
printf("%I64d\n",k*room[1].num);
}
}
}