level 7
mz,mf,m,f,f1:int64;
pd:boolean;
begin
readln(n,p);
mz:=0; mf:=0; m:=0; pd:=false;
for i:=1 to n do begin
read(s);
if i=1 then begin
if s<0 then begin
mf:=mf+s;
pd:=true;
end;
m:=m+s;
end
else begin
if s<0 then begin
mf:=mf+s;
pd:=true;
if s>m then m:=s;
end
else begin
if pd then begin
mz:=mz+s;
if mz+mf>0 then
if mf+m<0 then begin
m:=mz;
mz:=0;
end
else begin
m:=m+mf+mz;
mz:=0;
mf:=0;
end
else if m<mz then begin
m:=mz;
mz:=0;
end;
end
else m:=m+s;
end;
end;
t:=m;
case i of
1:begin f1:=t; f:=f1; end;
2:f:=2*f1;
else if t>0 then f:=f+l;
end;
l:=t;
if i=n then
if f1>f then f:=f1;
end;
if f<0 then write('-');
writeln(abs(f) mod p);
readln;
end.
2015年10月04日 15点10分
3