满分代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int a[1001],con[1001];
int main(void)
{
int n,maxx;
scanf("%d",&n);
maxx=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]>maxx)
maxx=a[i];
}
memset(con,0,sizeof(con));
for(int i=0;i<n;i++)
{
int l=i-1,r=i+1;
bool flag1=true,flag2=true;
while(l>=0||r<n||flag1||flag2)
{
if(flag1&&a[l]>=a[i])//左侧延申求左端点
con[i]++;
else
flag1=false;
if(flag2&&a[r]>=a[i])//右侧延申求右端点
con[i]++;
else
flag2=false;
l--,r++;
}
//cout<<i<<' '<<con[i]<<endl;
}
int areamax=maxx;
for(int i=0;i<n;i++)
{
if(a[i]*(con[i]+1)>areamax)
areamax=a[i]*(con[i]+1);
}
printf("%d\n",areamax);
return 0;
}