Я попытался реализовать это, но он показывает nullPointerException: он в основном делает это, находя первый элемент ниже, чем A [i], используя метод lowerKey (), затем находит расстояние между найденным выше элементом иначало карты.
public static void main(String...aks){
Integer arr[] = {12, 1, 2, 3, 0, 11, 4 };
TreeMap<Integer, Integer> treeMap=new TreeMap<Integer, Integer>();
int[] count=new int[arr.length];
for (int i=arr.length-1;i>=0;i--){
treeMap.put(arr[i], 1);
}
for (int j=arr.length-1;j>=0;j--) {
int lowerKey = treeMap.lowerKey(arr[j]);
count[j] = treeMap.headMap(lowerKey).size();
}
for(int elem: count) {
System.out.println(elem);
}