Cod sursa(job #278400)

Utilizator cheery_g1rlHaller Emanuela cheery_g1rl Data 12 martie 2009 12:03:02
Problema Reguli Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.79 kb
var p,v:array[0..500000] of int64;
    n,i,k,q,l,r,c:longint;
procedure prefix;
    begin
      v[1]:=0; k:=0;
      for q:=2 to n do
        begin
          while (k>0)and(p[k+1]<>p[q]) do k:=v[k];
          if p[k+1]=p[q] then inc(k);
          v[q]:=k;
        end;
    end;
begin
assign(input,'reguli.in'); reset(input); assign(output,'reguli.out'); rewrite(output);
readln(n);
readln(p[0]);
for i:=1 to n-1 do  readln(p[i]);
for i:=n-1 downto 1 do p[i]:=p[i]-p[i-1];
prefix;
dec(n);
r:=v[n]; l:=n+1;
while r<>0 do
  begin
    c:=(n-r) div (n-r-v[n-r]);
    if (v[n-r]>0)and((n-r)mod(n-r-v[n-r])=0) then
      if l>(n-r) div c then l:=(n-r) div c;
    r:=v[r];
  end;
if l=n+1 then dec(l);
writeln(l);
for i:=1 to l do writeln(p[i],' ');
close(input); close(output);
end.