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