fork download
  1. program px(input,output);
  2. type list=array [1..6] of integer;
  3. var
  4. d,e : list; ii,N : integer;
  5.  
  6. procedure merge(var a,b,c,eii : list;
  7. fa,la,fb,lb,fc : integer;
  8. var lc : integer); forward;
  9. procedure mergesort(var a,ei : list;
  10. fa, la : integer);
  11. var b : list; i, mid : integer;
  12. begin
  13. if fa<la then
  14. begin mid := (fa + la) div 2;
  15. mergesort(a,ei, fa, mid);
  16. mergesort(a,ei, mid+1, la);
  17. merge(a, a, b,ei,fa, mid, mid+1,
  18. la, fa, la);
  19. for i := fa to la do a[i]:=b[i]
  20. end
  21. end;
  22.  
  23. procedure merge(var a,b,c,eii : list;
  24. fa,la,fb,lb,fc : integer;
  25. var lc : integer);
  26. var ia, ib, ic,tt : integer; eh : list;
  27. begin
  28. if la>lb then for tt:=1 to la do eh[tt]:=tt
  29. else for tt:=1 to lb do eh[tt]:=tt;
  30. ia := fa; ib := fb; ic := fc;
  31. repeat
  32. if a[ia]<b[ib] then
  33. begin eii[ic]:=eh[ia]; c[ic]:=a[ia]; ia:=ia+1; end
  34. else
  35. begin eii[ic]:=eh[ib]; c[ic]:=b[ib]; ib:=ib+1; end;
  36. ic := ic+1
  37. until (ia>la) or (ib>lb);
  38. for ia := ia to la do
  39. begin eii[ic]:=eh[ia]; c[ic]:=a[ia]; ic:=ic+1; end;
  40. for ib := ib to lb do
  41. begin eii[ic]:=eh[ib]; c[ic]:=b[ib]; ic:=ic+1; end;
  42. lc := ic-1
  43. end;
  44.  
  45. begin
  46. readln(N);
  47. for ii:=1 to N do read(d[ii]); for ii:=1 to N do e[ii]:=ii;
  48. mergesort(d,e,1,N);
  49. for ii:=1 to N do write(e[ii]); writeln
  50. end.
Success #stdin #stdout 0.01s 256KB
stdin
Standard input is empty
stdout