language: Pascal (fpc) (fpc 2.2.0)
date: 97 days 9 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 px(input,output);
type list=array [1..6] of integer;
var
 d,e : list; ii,N : integer;
 
procedure merge(var a,b,c,e : list;
fa,la,fb,lb,fc : integer;
var lc : integer); forward;
procedure mergesort(var a,e : list;
fa, la : integer);
var b : list; i, mid : integer;
begin
if fa<la then
begin mid := (fa + la) div 2;
mergesort(a,e, fa, mid);
mergesort(a,e, mid+1, la);
merge(a, a, b,e,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,e : list;
fa,la,fb,lb,fc : integer;
var lc : integer);
var ia, ib, ic,kk,tt : integer;
begin
ia := fa; ib := fb; ic := fc; kk:=fc;
repeat
if a[ia]<b[ib] then
begin tt:=e[kk];e[kk]:=e[ia];e[ia]:=tt; c[ic]:=a[ia]; ia:=ia+1;kk:=kk+1 end
else
begin tt:=e[kk];e[kk]:=e[ib];e[ib]:=tt; c[ic]:=b[ib]; ib:=ib+1;kk:=kk+1 end;
ic := ic+1
until (ia>la) or (ib>lb);
for ia := ia to la do
begin tt:=e[kk];e[kk]:=e[ia];e[ia]:=tt; c[ic]:=a[ia]; ic:=ic+1;kk:=kk+1 end;
for ib := ib to lb do
begin tt:=e[kk];e[kk]:=e[ib];e[ib]:=tt; c[ic]:=b[ib]; ic:=ic+1; kk:=kk+1 end;
lc := ic-1
end;
 
begin
readln(N);
for ii:=1 to N do read(d[ii]); for ii:=1 to N do e[ii]:=ii;
mergesort(d,e,1,N);
for ii:=1 to N do write(e[ii]); writeln
end.