NKSEQ - Dãy số
Tác giả: flashmt
Ngôn ngữ: Pascal
const fi='';
fo='';
maxn=100000;
var n,sum,re,min:longint;
a:array[1..maxn] of longint;
procedure rf;
var i:longint;
begin
assign(input,fi);
reset(input);
readln(n); sum:=0;
for i:=1 to n do
begin
read(a[i]);
sum:=sum+a[i];
end;
close(input);
end;
procedure pr;
var i,j:longint;
begin
re:=0;
if sum>0 then
begin
min:=a[n]; sum:=a[n];
for i:=1 to n-1 do
begin
sum:=sum+a[i];
if sum<min then min:=sum;
end;
if min>0 then re:=1;
for i:=n-1 downto 1 do
begin
if min<0 then min:=a[i]+min
else min:=a[i];
if min>0 then inc(re);
end;
end;
end;
procedure wf;
begin
assign(output,fo);
rewrite(output);
write(re);
close(output);
end;
begin
rf;
pr;
wf;
end.