Cod sursa(job #1228415)

Utilizator valen.valentinValentin Valeanu valen.valentin Data 14 septembrie 2014 09:20:10
Problema Interclasari Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.05 kb
program interclaseri;
type
tabel=array[0..2000000] of longint;
var
t,c:tabel;
n,m,i,j,k,x:longint;
f1,f2:text;
procedure interclaseaza(s,m,d:longint); forward;
procedure mergesort(s,d:longint);
var
m:longint;
begin
if s<d then begin
m:=(s+d) div 2;
mergesort(s,m);
mergesort(m+1,d);
interclaseaza(s,m,d);
end;
end;
procedure interclaseaza(s,m,d:longint);
var
i,j,k:longint;
begin
i:=s; j:=m+1; k:=0;
while (i<=m) and (j<=d) do
if t[i]<t[j] then begin inc(k); c[k]:=t[i]; inc(i); end else
begin inc(k); c[k]:=t[j]; inc(j); end;
while (i<=m) do begin inc(k); c[k]:=t[i]; inc(i); end;
while (j<=d) do begin inc(k); c[k]:=t[j]; inc(j); end;
k:=0;
for i:=s to d do begin
k:=k+1;
t[i]:=c[k];
end;
end;
begin
assign (f1,'interclasari.in');
assign (f2,'interclasari.out');
reset (f1);
rewrite (f2);
readln (f1,n);
k:=0;
for i:=1 to n do begin
 readln (f1,m);
 for j:=1 to m do begin
  k:=k+1;
  read (f1,x);
  t[k]:=x;
 end;
end;
mergesort(1,k);
writeln (f2,k);
for i:=1 to k do
 write (f2,t[i],' ');
close (f1);
close (f2);
end.