Cod sursa(job #1819113)

Utilizator TheMastermindThe Mastermind TheMastermind Data 30 noiembrie 2016 10:46:14
Problema Reguli Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.88 kb
program reguli;

const
  tfi = 'reguli.in';
  tfo = 'reguli.out';

var
  n : longint;
  a,x,kmp : array [0..1000000] of int64;

procedure enter;
  var i : longint;
  begin
    assign(input,tfi);
    reset(input);
    read(n);
    dec(n);
    for i := 0 to n do read(x[i]);
    close(input);
  end;

procedure process;
  var i,j : longint;
  begin
    for i := 1 to n do a[i] := x[i] - x[i-1];
    j := 0;
    for i := 2 to n do
      begin
        while (j > 0) and (a[i] <> a[j+1]) do j := kmp[j];
        if (a[j+1] = a[i]) then
          begin
            inc(j);
            kmp[i] := j;
          end;
      end;
  end;

procedure print;
  var i : longint;
  begin
    assign(output,tfo);
    rewrite(output);
    writeln(n - kmp[n]);
    for i := 1 to n - kmp[n] do writeln(a[i]);
    close(output);
  end;

begin
  enter;
  process;
  print;
end.