Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // By: KozerG from hoc24.vnâ¥
- var n, m, i: longint;
- a, b, rank: array[1..1000000] of longint;
- procedure push(x, j: longint);
- var temp: longint;
- begin
- b[j] := x; rank[x] := j;
- while (j > 1) and (b[j - 1] < b[j]) do
- begin
- dec(rank[b[j]]); inc(rank[b[j - 1]]);
- temp := b[j];
- b[j] := b[j - 1];
- b[j - 1] := temp;
- dec(j);
- end;
- end;
- begin
- read(n); m := 0;
- for i := 1 to n do
- begin
- read(a[i]); rank[a[i]] := 0;
- end;
- for i := 1 to n do
- if rank[a[i]] = 0 then
- begin
- inc(m);
- push(a[i], m);
- end;
- for i := 1 to n do
- write(rank[a[i]], ' ');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement