3090880_ac_732ms_800k.cc
来自「北大大牛代码 1240道题的原代码 超级权威」· CC 代码 · 共 52 行
CC
52 行
#include <stdio.h>
int main()
{
int i, j, k, n;
int len[50001];
int left[50001];
int right[50001] ;
while(scanf("%d",&n)==1)
{
for(i = 0; i < n; i++)
{
scanf("%d",&len[i]);
}
left[0] = -1;
for(j = 1; j < n; j++)
{
k = j-1;
while(k!=-1&&len[k]<len[j])
k = left[k];
left[j] = k;
}
right[n-1] = n;
for(j = n-2; j >= 0; j--)
{
k = j+1;
while(k!=n&&len[k]>len[j])
k = right[k];
right[j] = k;
}
int ans = -1;
for(i = 0; i < n-1; i++)
{
int r;
r = right[i]-1;
if(r==i||r-i<=ans)
continue;
else
{
while(r>i&&left[r]>=i&&r-i>ans)
r = left[r];
r = r-i;
if(r > ans)
ans = r;
}
}
printf("%d\n",ans);
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?