Cod sursa(job #23100)

Utilizator Pharaoh****** Pharaoh Data 28 februarie 2007 02:16:16
Problema Reguli Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.21 kb
{$IFDEF NORMAL}
  {$I-,Q-,R-,S-}
{$ENDIF NORMAL}
{$IFDEF DEBUG}
  {$I+,Q+,R+,S-}
{$ENDIF DEBUG}
{$IFDEF RELEASE}
  {$I-,Q-,R-,S-}
{$ENDIF RELEASE}
type vec=array[1..500000]of int64;
var v:vec;
    n:longint;

procedure readdata;
var f:text;
    i:longint;
    c,d:int64;

begin
assign(f,'reguli.in'); reset(f);
readln(f,n);

readln(f,c);

for i:=2 to n do
    begin
        readln(f,d);
        v[i-1]:=d-c;
        c:=d;
    end;

dec(n);

close(F);
end;


function verificare(r: longint):longint;
var i:longint;
begin

for i:=r+1 to n do
        if (v[i]<>v[i-r]) then begin verificare:=i; exit; end;

verificare:=0;

end;


procedure scrie(t:longint);
var i:longint;
    f:text;
begin
assign(f,'reguli.out'); rewrite(F);
writeln(f,t);
for i:=1 to t do writeln(f,v[i]);
close(f);
end;


procedure check;
var c,i:longint;
begin

i:=2;
while(i<=n) do
    begin
        if (v[i]=v[1]) then
                    begin
                        c:=verificare(i-1);
                        if (c<>0) then i:=c-1
                        else begin scrie(i-1); halt; end;
                    end;
        inc(i);
    end;

scrie(n);

end;

Begin
readdata;
check;
End.