Pagini recente » Cod sursa (job #403318) | Cod sursa (job #445639) | Cod sursa (job #607542) | Cod sursa (job #1720514) | Cod sursa (job #18940)
Cod sursa(job #18940)
{$I-,Q-,R-,S-}
const
FIN = 'reguli.in';
FOUT = 'reguli.out';
NMAX = 500000;
var
A : array[ 0..NMAX ] of string;
PI : array[ 0..NMAX ] of longint;
f, g : text;
N, i, min, k, q : longint;
s : string;
x0, x1 : int64;
procedure read_data;
var i, cod : longint;
s : string;
begin
assign( f, FIN ); reset( f );
readln( f, N );
readln( f, s ); val( s, x0, cod );
for i := 2 to N do
begin
readln( f, s );
val( s, x1, cod );
str( x1 - x0, A[i-1] );
x0 := x1;
end;
close( f );
N := N - 1;
end;
procedure kmp;
begin
k := 0;
pi[ 1 ] := 0;
for q := 2 to n do
begin
while ( k > 0 ) and ( A[ k + 1] <> A[ q ] ) do k := pi[ k ];
if A[ k + 1] = A[q] then k := k + 1;
pi[ q ] := k;
end;
end;
procedure save;
begin
assign( g, FOUT ); rewrite( g );
min := n - pi[n];
writeln( g, min );
for i := 1 to min do
begin
writeln( g, A[i] );
end;
close( g );
end;
begin
read_data;
kmp;
save;
end.