然而这是一道大水题。。
主要思想就是以一个为中心,然后朝两边找。
然而暴力的代码一点也不优美。于是我们想办法直接处理,用递推就可以解决。
这是我在Code Forces里第一次交题目。。
#include<iostream>
using namespace std;
int n,a[1001],f1[1005],f2[1005],ans;
void read()
{
int i,j;
cin>>n;
for(i=1; i<=n; i++)
cin>>a[i];
for(i=1; i<=n; i++)
if(a[i-1]<=a[i])
f1[i]=f1[i-1]+1;
else
f1[i]=1;
for(i=n; i>=1; i--)
if(a[i+1]<=a[i])
f2[i]=f2[i+1]+1;
else
f2[i]=1;//求单调区间
for(i=1; i<=n; i++)
if(f1[i]+f2[i]-1>ans)
ans=f1[i]+f2[i]-1;
cout<<ans<<endl;
return;
}
int main()
{
read();
return 0;
}
然而是一次AC掉的代码。。