Cod sursa(job #178596)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 14 aprilie 2008 19:57:21
Problema Reguli Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1 kb
var v:array[0..500001]of int64;
    pi:array[0..500001]of longint;
    n,i,j,k:longint;
    a,b:int64;
    x:integer;
	s:string;
    f:text;
begin
   {citire+diferente}
   assign(f,'reguli.in');
   reset(f);
   readln(f,n);
   dec(n);
   for i:=0 to n do
   begin
      a:=b;

	  //parsarea citirii
	  b:=0;
	  readln(f,s);
	  k:=length(s);
          if s[1]='-' then begin for j:=2 to k do
                                 b:=b*10+ord(s[j])-48;
                                 b:=b*-1;
                           end
                      else for j:=1 to k do
                           b:=b*10+ord(s[j])-48;

      v[i]:=b-a;
   end;
   close(f);

   {prefix}
   pi[1]:=0;
   k:=0;
   for i:=2 to n do
   begin
      while(k>0)and(v[k+1]<>v[i])do
          k:=pi[k];
      if v[k+1]=v[i] then inc(k);
      pi[i]:=k;
   end;

   {afisare}
   assign(f,'reguli.out');
   rewrite(f);
   writeln(f,n-pi[n]);
   for i:=1 to n-pi[n] do
      writeln(f,v[i]);
   close(f);
end.