#include<stdio.h>
int H[100005],l[100005],r[100005];
main()
{
__int64 max,area;
int i,n;
while(scanf("%d",&n),n)
{
for(i=1;i<=n;i++)
{
scanf("%d",&H[i]);
l[i]=r[i]=i;
}
for(i=1;i<=n;i++)
while(l[i]>1&&H[i]<=H[l[i]-1])
l[i]=l[l[i]-1];
for(i=n;i>=1;i--)
while(r[i]<n&&H[i]<=H[r[i]+1])
r[i]=r[r[i]+1];
for(max=0,i=1;i<=n;i++)
{
area=(__int64)H[i]*(r[i]-l[i]+1); //area=(__int64)(H[i]*(r[i]-l[i]+1)); wrong??
if(max<area) max=area;
}
printf("%I64d\n",max);
}
}

7万+

被折叠的 条评论
为什么被折叠?



