Pagini recente » Cod sursa (job #180332) | Cod sursa (job #1627827) | Cod sursa (job #313299) | Cod sursa (job #1879471) | Cod sursa (job #514130)
Cod sursa(job #514130)
const f='numararee.in';g='numararee.out';maxn=100005;
var
a,l:array[0..maxn] of longint;
rez,st,dr,i,n,p:longint;
begin
assign(input,f);reset(input);
assign(output,g);rewrite(output);
readln(n);
for i:=1 to n do
begin
read(a[i]);
a[i-1]:=a[i-1]-a[i];
end;
n:=n-1;
l[1]:=0;
st:=1;
dr:=1;
for i:=2 to n do
if (i<=dr) then
begin
p:=st+dr-i;
if l[p]>=dr-i then l[i]:=dr-i
else l[i]:=l[p];
if (i+l[i]=dr) then
begin
st:=i-l[i];
dr:=i+l[i];
while(st>1) and (dr<n) and (a[i-l[i]-1]=a[i+l[i]+1]) do
begin
l[i]:=l[i]+1;
st:=st-1;
dr:=dr+1;
end;
end;
end
else
begin
l[i]:=0;
st:=i;
dr:=st;
while (st>1)and(dr<n)and(a[i-l[i]-1]=a[i+l[i]+1]) do
begin
l[i]:=l[i]+1;
st:=st-1;
dr:=dr+1;
end;
end;
for i:=1 to n do
rez:=rez+l[i]+1;
write(rez);
close(input);close(output);
end.