Pagini recente » Monitorul de evaluare | Cod sursa (job #2548351) | Cod sursa (job #1941253) | Cod sursa (job #2193830) | Cod sursa (job #1142942)
type vec=array[1..100]of longint;
var a,b:vec;
n,i,j,nr:longint;
f,q:text;
procedure merge(ls,ld:longint;var nr:longint);
var i,j,m,n,k:longint;
begin
if ls<ld then
begin
m:=(ls+ld)div 2;
merge(ls,m,nr);
merge(m+1,ld,nr);
end;
j:=m+1;
i:=ls;
k:=ls;
while (i<=m)and(j<=ld) do
begin
if a[i]>=a[j] then
begin
b[k]:=a[j];
inc(j);
end
else
begin
b[k]:=a[i];
inc(i);
end;
inc(k);
end;
while i<=m do
begin
b[k]:=a[n];
inc(i);
inc(k);
end;
while j<=ld do
begin
b[k]:=a[n];
inc(j);
inc(k);
end;
for n:=ls to ld do
a[i]:=b[i];
nr:=k;
end;
begin
assign(f,'algsort.in');
reset(f);
assign(q,'algsort.out');
rewrite(q);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
merge(1,n,nr);
for i:=1 to nr-1 do
write(q,b[i],' ');
close(f);
close(q);
end.