language: Pascal (fpc) (fpc 2.2.0)
date: 104 days 6 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
program skata(input,output);
type list=array [1..10] of integer;
var
 ii,n : integer; r : list;
 
procedure merge(var a,b,c : list;
fa,la,fb,lb,fc : integer;
var lc : integer); forward;
procedure mergesort(var a : list;
fa, la : integer);
var b : list; i, mid : integer;
begin
if fa<la then
begin mid := (fa + la) div 2;
mergesort(a, fa, mid);
mergesort(a, mid+1, la);
merge(a, a, b, fa, mid, mid+1,
la, fa, la);
for i := fa to la do a[i]:=b[i]
end
end;
 
procedure merge(var a,b,c : list;
fa,la,fb,lb,fc : integer;
var lc : integer);
var ia, ib, ic : integer;
begin
ia := fa; ib := fb; ic := fc;
repeat
if a[ia]<b[ib] then
begin c[ic]:=a[ia]; ia:=ia+1 end
else
begin c[ic]:=b[ib]; ib:=ib+1 end;
ic := ic+1
until (ia>la) or (ib>lb);
for ia := ia to la do
begin c[ic]:=a[ia]; ic:=ic+1 end;
for ib := ib to lb do
begin c[ic]:=b[ib]; ic:=ic+1 end;
lc := ic-1
end;
 
begin
readln(N);
for ii:=1 to N do read(r[ii]);
mergesort(r,1,N);
for ii:=1 to N do write(r[ii])
end.