Cod sursa(job #1819060)

Utilizator mh211Tran Manh Hieu mh211 Data 30 noiembrie 2016 09:23:36
Problema Reguli Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.45 kb
const
    inp = 'reguli.in';
    out = 'reguli.out';
    maxn = 500000 + 5;

var
    n, m, np : longint;
    x, d, p : array[0..maxn] of int64;

function    check(L : longint) : boolean;
    var     i : Longint;
    begin
        for i := L + 1 to m do
            if d[i] <> d[i-L] then exit(false);
        exit(true);
    end;

procedure   main;
    var     i, j, firstpos : longint;
    begin
        readln(n);
        m := n - 1;
        for i := 0 to m do read(x[i]);

        firstpos := 0;
        for i := 1 to m do
            begin
                d[i] := x[i] - x[i-1];
                if (firstpos = 0) and (d[i] <> d[1]) then firstpos := i;
                if (firstpos > 0) and (d[i] = d[1]) then
                    begin
                        inc(np);
                        p[np] := i;
                    end;
            end;

        if firstpos = 0 then
            begin
                writeln(1);
                writeln(d[1]);
                exit;
            end;

        for i := 1 to np do
            if (p[i] > firstpos) and (check(p[i] - 1)) then
                begin
                    writeln(p[i] - 1);
                    for j := 1 to p[i] - 1 do writeln(d[j]);
                    exit;
                end;
        writeln(m);
        for i := 1 to m do write(d[i],' ');
    end;

begin
    assign(input,inp); reset(input);
    assign(output, out); rewrite(output);
    main;
end.