现在的位置: 首页 > 综合 > 正文

HDU ACM 1506

2013年06月23日 ⁄ 综合 ⁄ 共 625字 ⁄ 字号 评论关闭

#include<stdio.h>

long n,a[100005],i,pre[100005],next[100005];

__int64 max,tem_max;

int main()
{
    while(scanf("%ld",&n),n){
        for(i=0;i<n;i++) {
            scanf("%ld",&a[i]);
            next[i]=pre[i]=i;
        }
        for(i=1;i<n;i++){
            while(pre[i]>0 && a[pre[i]-1]>=a[i])
                pre[i]=pre[pre[i]-1];
        }
        for(i=n-2;i>=0;i--){
            while(next[i]<n-1 && a[next[i]+1]>=a[i])
                next[i]=next[next[i]+1];
        }
        max=0;
        for(i=0;i<n;i++){
           tem_max=(__int64)(next[i]-pre[i]+1)*a[i];
            if(max<tem_max)    max=tem_max;
        }
        printf("%I64d/n",max);
    }
    return 0;
}

抱歉!评论已关闭.