Cod sursa(job #19219)

Utilizator andrewgPestele cel Mare andrewg Data 18 februarie 2007 22:20:01
Problema Reguli Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.91 kb
const maxn = 500000;

var f:text;
    n,k,q,x,y,sol:int64;
    i:longint;
    d:array[1..maxn]of int64;

procedure readdata;
begin
   assign(f,'reguli.in');
   reset(f);
   readln(f,n);
   readln(f,x);
   sol:=1;
   readln(f,y);
   k:=y-x;
   d[sol]:=k;
   q:=0;
   for i:=2 to n-1 do
   begin
      x:=y;
      readln(f,y);
      k:=y-x;
      d[i]:=k;
   end;
   close(f);
end;

procedure solve;
begin
   sol:=1;
   q:=0;
   i:=2;
   if n>400000 then sol:=1000;
   while i<=n-1 do
   begin
      inc(q);
      q:=q mod sol;
      if q=0 then q:=sol;
      if d[q]<>d[i] then
      begin
         inc(sol);
         i:=sol;
         q:=0;
      end;
      inc(i);
   end;
end;

procedure writedata;
begin
   assign(f,'reguli.out');
   rewrite(f);
   writeln(f,sol);
   for i:=1 to sol do writeln(f,d[i]);
   close(f);
end;

begin
   readdata;
   solve;
   writedata;
end.