import
java.util.*;
import
java.io.*;
import
java.lang.*;
import
java.util.AbstractMap.SimpleEntry;
import
java.util.Map.Entry;
import
java.util.TreeSet;
public
class
GFG
{
public
static
void
inversionCount(
int
[] arr,
int
n)
{
int
[] ans =
new
int
[n];
TreeSet<Entry<Integer, Integer>> St =
new
TreeSet<>(
new
Comparator<Entry<Integer, Integer>>() {
@Override
public
int
compare(Entry<Integer, Integer> a, Entry<Integer, Integer> b) {
return
a.getKey().compareTo(b.getKey());
}
});
for
(
int
i =
0
; i < n; i++) {
int
cur = St.headSet(
new
SimpleEntry<Integer, Integer>(arr[i], n+
1
)).size();
ans[i] = St.size() - cur;
St.add(
new
SimpleEntry<Integer, Integer>(arr[i], i));
}
for
(
int
i =
0
; i < n; i++) {
System.out.print(ans[i] +
" "
);
}
System.out.print(
"\n"
);
}
public
static
void
main(String[] args) {
int
[] arr = {
5
,
2
,
3
,
2
,
3
,
8
,
1
};
int
n = arr.length;
inversionCount(arr, n);
}
}