rt
代码如下:
#include<cstdio>
using namespace std;
inline int read(){//快读
int x=0;
bool f=1;
char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-') f=0;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return f?x:-x;
}
inline int max(int x,int y){
return x>y?x:y;
}
int a[4000009];
int main(){
//
int n=read();
for(int i=1;i<=n;++i)
a[i]=read();
int l=1;
int ans=1<<31;
int maxx=a[l];
for(int r=l+1;r<=n;++r){
maxx=max(a[r],maxx);
if(a[r]<=a[l]){//更新左端点
l=r;
maxx=a[r];//此时,原来的最大值已经不在区间内了,更新掉
}
ans=max(maxx-a[l]-(r-l+1),ans);
}
l=n;
maxx=a[l];
for(int r=l-1;r>=1;--r){
maxx=max(a[r],maxx);
if(a[r]<=a[l]){
l=r;
maxx=a[r];
}
ans=max(maxx-a[l]-(l-r+1),ans);
}
printf("%d",ans);
return 0;
}