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 |
大神指点下为什么这个代码会超过时间限制#include <stdio.h> #include <iostream> using namespace std; int main() { static int cases,Arraynum,Array[10000]; int i,j,k,Flag; static int mark,MaxL[10000],MaxR[10000],ans,neg; cin>>cases; while(cases==0) { cin>>Arraynum; for(i=0;i<Arraynum;i++) cin>>Array[i]; for(mark=0;mark<Arraynum;mark++) //该数字前后的子数组最大值 { for(i=Flag=neg=0;i<=mark;i++) //包含mark { if(Array[i]>0&&Flag==0) { Flag=1; MaxL[mark]+=Array[i]; continue; } if(Array[i]>0&&Flag==1) { if(neg+Array[i]>=0) { MaxL[mark]+=(neg+Array[i]); neg=0; } continue; } if(Array[i]<=0&&Flag==1) neg+=Array[i]; } for(j=Arraynum-1,Flag=neg=0;j>mark;j--) //不包含mark { if(Array[j]>0&&Flag==0) { Flag=1; MaxR[mark]+=Array[j]; continue; } if(Array[j]>0&&Flag==1) { if(neg+Array[j]>=0) { MaxR[mark]+=(neg+Array[j]); neg=0; } continue; } if(Array[j]<=0&&Flag==1) neg+=Array[j]; } } for(mark=0;mark<Arraynum;mark++) if(MaxL[mark]+MaxR[mark]>ans) ans=MaxL[mark]+MaxR[mark]; printf("%d\n",ans); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator