Advertisement
leminhkt

67

Jul 17th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 0.59 KB | None | 0 0
  1. // By: KozerG from hoc24.vn♥
  2.  
  3. var n, m, i: longint;
  4.     a, b, rank: array[1..1000000] of longint;
  5.  
  6. procedure push(x, j: longint);
  7. var temp: longint;
  8. begin
  9.     b[j] := x; rank[x] := j;
  10.     while (j > 1) and (b[j - 1] < b[j]) do
  11.     begin
  12.         dec(rank[b[j]]); inc(rank[b[j - 1]]);
  13.         temp := b[j];
  14.         b[j] := b[j - 1];
  15.         b[j - 1] := temp;
  16.         dec(j);
  17.     end;
  18. end;
  19.  
  20. begin
  21.     read(n); m := 0;
  22.     for i := 1 to n do
  23.     begin
  24.         read(a[i]); rank[a[i]] := 0;
  25.     end;
  26.     for i := 1 to n do
  27.         if rank[a[i]] = 0 then
  28.         begin
  29.             inc(m);
  30.             push(a[i], m);
  31.         end;
  32.     for i := 1 to n do
  33.         write(rank[a[i]], ' ');
  34. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement