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 |
int64In Reply To:我的程序总是WA...能告诉我哪组数据错了么? Posted by:Ruser at 2005-07-13 21:24:57 > 程序说明: > const > max=2147483640; > maxn=50000; > var > a:array[1..maxn] of integer; > sum:longint; > start:word; > min,minw,answer,n,c,k,t:longint; > f,f2:boolean; > Procedure init; > var > i:longint; > begin > readln(n); > f2:=true;c:=0; > for i:=1 to n do read(a[i]); > start:=n+1; > for i:=1 to n do if a[i]>0 then begin start:=i;break;end; > for i:=start+1 to n do if a[i]>0 then begin inc(c);f2:=false;end; > if (c=1)or(f2) then start:=n+1; > end; > Procedure main; > var > i,t,w:longint; > begin > answer:=a[start]; > min:=0;sum:=a[start];t:=0; > for i:=start+1 to n do > begin > sum:=sum+a[i]; > if a[i]>0 then t:=0; > if a[i]<0 then t:=t+a[i]; > if t<min then begin min:=t;minw:=i;end; > if sum-min>answer then answer:=sum-min; > if sum<0 then begin sum:=0;min:=0;t:=0;end; > end; > if (start=n+1)or(f2) then > begin > answer:=0;min:=-max;t:=-max; > for i:=1 to n do > if a[i]>=min then begin min:=a[i];w:=i;end; > for i:=1 to n do > if (a[i]>t)and(i<>w) then t:=a[i]; > if start=n+1 then answer:=min+t else answer:=a[start]+min; > end; > end; > Begin > Readln(t); > for k:=1 to t do > begin > init; > main; > writeln(answer); > end; > End. > Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator