Cod sursa(job #1819072)

Utilizator abcdxbDio Xuan Park abcdxb Data 30 noiembrie 2016 09:34:50
Problema Reguli Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.09 kb
VAR
  s,x,z : array[0..500010] of int64 ;
PROCEDURE nhap;
  var n,i,l,r,k,j : longint ;
  begin
    read(n) ;
    dec(n) ;
    for i := 0 to n do read(x[i]) ;
    for i := 0 to n-1 do s[i] := x[i+1] - x[i] ;
    dec(n) ;
    l := 0 ; r := 0 ;
    z[0] := n+1 ;
    for i := 1 to n do
      if i>r then
        begin
          l := i ; r := i ;
          while (r<=n) and (s[r]=s[r-l]) do inc(r) ;
          z[i] := r-l ;
          dec(r) ;
        end
      else
        begin
          k := i-l ;
          if z[k]<(r-i+1) then z[i]:=z[k]
            else begin
                   l := i ;
                   while (r<=n) and (s[r]=s[r-l]) do inc(r) ;
                   z[i] := r-l ;
                   dec(r) ;
                 end;
        end;

    for i := 0 to n do
      if z[i+1]=n-i then
        begin
          writeln(i+1) ;
          for j := 0 to i do writeln(s[j]) ;
          halt;
        end;
  end;
BEGIN
  assign(input,'reguli.in') ; reset(input) ;
  assign(output,'reguli.out') ; rewrite(output) ;
  nhap;
  close(input) ; close(output) ;
END.