NKSEQ - Dãy số
Tác giả: ladpro98
Ngôn ngữ: Pascal
program nkseq_AC;
uses math;
const fi='';
var a,left,right,minleft,minright:array[0..100001] of longint;
n,res:longint;
procedure input;
var inp:text;
i:longint;
begin
assign(inp,fi);
reset(inp);
readln(inp,n);
for i:=1 to n do read(inp,a[i]);
close(inp);
end;
procedure init;
var i:longint;
begin
left[1]:=a[1];
for i:=2 to n do left[i]:=left[i-1]+a[i];
right[n]:=a[n];
for i:=n-1 downto 1 do right[i]:=right[i+1]+a[i];
minleft[1]:=left[1];
for i:=2 to n do
minleft[i]:=min(minleft[i-1],left[i]);
minright[n]:=left[n];
for i:=n-1 downto 1 do
minright[i]:=min(minright[i+1],left[i]);
end;
procedure process;
var i:longint;
begin
for i:=1 to n do
begin
if (minleft[i-1]+right[i]>0) and (minright[i]-left[i-1]>0)
then inc(res);
end;
end;
begin
input;
init;
process;
write(res);
end.