Pagini recente » Cod sursa (job #1913404) | Cod sursa (job #721361) | Borderou de evaluare (job #2830520) | Cod sursa (job #2759379) | Cod sursa (job #1819135)
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 (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 writeln(d[i],' ');
end;
begin
assign(input,inp); reset(input);
assign(output, out); rewrite(output);
main;
end.