Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

我的程序总是WA...能告诉我哪组数据错了么?

Posted by Ruser at 2005-07-13 21:24:57 on Problem 2479
程序说明:
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator