Cod sursa(job #18122)

Utilizator gurneySachelarie Bogdan gurney Data 18 februarie 2007 09:43:12
Problema Reguli Scor 70
Compilator fpc Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 1.37 kb
program reguli;
  const
    fin='reguli.in';
    fout='reguli.out';
    nmax=500000;
  var
   a:array[1..nmax] of int64;
   num,tmp,n,i,j,k,x:longint;
   b:array[1..nmax] of int64;
   ok:boolean;
   min:longint;
function modulo(x,k:longint):longint;
  begin
    if x<k then
      modulo:=x+1
    else
      modulo:=1;
  end;
begin
  assign(input,fin);
    reset(input);
    readln(n);
    for i:=1 to n do
      readln(a[i]);
  close(input);
  assign(output,fout);
    rewrite(output);
    num:=1;tmp:=1;
    ok:=false;
    min:=n-1;
    b[1]:=a[2]-a[1];
    for i:=3 to n do
      begin
        if ok then
          begin
            if a[i]-a[i-1]=b[modulo(x,k)] then
              begin
                x:=modulo(x,k);
              end
            else
              begin
                ok:=false;
              end;
          end
        else
          begin
            if a[i]-a[i-1]=b[1] then
              begin
                ok:=true;
                k:=tmp;
                x:=modulo(0,k);
              end;
          end;
        inc(tmp);
        b[tmp]:=a[i]-a[i-1];
      end;
    if ok then
      begin
        writeln(k);
        for i:=1 to k do
          writeln(b[i]);
      end
    else
      begin
        writeln(tmp);
        for i:=1 to tmp do
          writeln(b[i]);
      end;
  close(output);
end.