package contests;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.TreeSet;
/**
* Created by sherxon on 2/11/17.
*/
public class ReversePairs {
public static void main(String[] args) {
int[] a = new int[50000];
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 10000);
}
System.out.println(reversePairs(a));
}
static int reversePairs(int[] nums) {
TreeMap<Integer, TreeSet<Integer>> map = new TreeMap<>();
for (int i = 0; i < nums.length; i++) {
if (!map.containsKey(nums[i]))
map.put(nums[i], new TreeSet<>());
else
map.get(nums[i]).add(i);
}
int count = 0;
for (int i = 0; i < nums.length; i++) {
int level = nums[i] % 2 == 0 ? (nums[i] / 2) : (nums[i] / 2 + 1);
SortedMap<Integer, TreeSet<Integer>> sortedMap = map.headMap(level);
for (Integer integer : sortedMap.keySet()) {
count += sortedMap.get(integer).tailSet(i, false).size();
}
}
return count;
}
}