讨论 / help~
marslove 2008-10-30 05:00:00
点我顶贴 收藏 删除
program c208;

const maxn=1000002;

var f1,f2,a:array [1..maxn] of int64;

sumx,max,min:int64; tt:boolean; n,i,j,minx:longint;

begin

tt:=true;

minx:=-maxlongint;

readln(n);

sumx:=0;

for i:=1 to n do

begin

read(a[i]);

if a[i]>=0 then tt:=false;

if (a[i]<0) and (a[i]>minx) then minx:=a[i];

inc(sumx,a[i]);

end;

f1[1]:=a[1];

f2[1]:=a[1];

max:=0;

min:=maxlongint;

for i:=2 to n do

begin

if f1[i-1]>0 then

begin

f1[i]:=f1[i-1]+a[i];

if f1[i]>max then max:=f1[i];

end

else

begin f1[i]:=a[i];if f1[i]>max then max:=f1[i]; end;

if f2[i-1]<0 then

begin

f2[i]:=f2[i-1]+a[i];

if f2[i]<min then min:=f2[i];

end

else

begin f2[i]:=a[i];if f2[i]<min then min:=f2[i]; end;

end;

if max>0 then

if sumx-min>max then write(sumx-min) else write(max)

else if tt then write(minx) else write(0);

end.

有俩超时一个输出过长~~为什么?

查看更多回复
提交回复