| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
WA。。。。。。不知为什么。路过的大牛帮忙看看#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
struct a
{
long long num;
long long s;
};
typedef struct a qq;
stack<qq>q;
stack<qq>z;
int main()
{
long long n,m[10000]={0},max,ans[10000]={0},size=0;;
qq scan[10000];
while(1)
{
qq e,l;
scanf("%lld",&n);
if(n==0)break;
for(int i=0;i<n;i++)
{
scanf("%lld",&scan[i].num);
scan[i].s=i+1;
}
e.num=-1;
e.s=n+1;
l.num=-1;
l.s=0;
q.push(e);
z.push(l);
for(int i=n-1;i>=0;i--)
{
while(scan[i].num<=q.top().num)q.pop();
m[i]=q.top().s-scan[i].s-1;
q.push(scan[i]);
}
max=0;
for(int i=0;i<n;i++)
{
while(scan[i].num<=z.top().num)z.pop();
int w=(m[i]+scan[i].s-z.top().s)*scan[i].num;
if(w>max)max=w;
z.push(scan[i]);
}
ans[size++]=max;
}
for(int i=0;i<size;i++)cout<<ans[i]<<endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator