fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. // your code goes here
  13. Scanner sc = new Scanner(System.in);
  14. List<Integer> arr = new ArrayList<>(Arrays.asList(1,2,3,2,4,5));
  15. List<List<Integer>> pairs = new ArrayList<>();
  16.  
  17. pairs.add(new ArrayList<>(Arrays.asList(0,1)));
  18. pairs.add(new ArrayList<>(Arrays.asList(3,4)));
  19. pairs.add(new ArrayList<>(Arrays.asList(0,0)));
  20. pairs.add(new ArrayList<>(Arrays.asList(3,4)));
  21. System.out.println(helper(arr, pairs));
  22.  
  23. }
  24. static int helper(List<Integer> arr, List<List<Integer>> pairs){
  25. int n = arr.size();
  26. int m = pairs.size();
  27. List<Integer> res = new ArrayList<>();
  28. boolean [] mark = new boolean[n];
  29.  
  30. for(int i=0;i<m;i++){
  31. int left = pairs.get(i).get(0);
  32. int right = pairs.get(i).get(1);
  33. for(int l = left;l<=right;l++){
  34. mark[l] = true;
  35. res.add(arr.get(l));
  36. }
  37. }
  38. int sum = 0;
  39. Collections.sort(res);
  40. for(int i = 0;i<n;i++){
  41. if(!mark[i]){
  42. sum+= smallerCount(res,arr.get(i));
  43. }
  44. }
  45. return sum;
  46. }
  47. static int smallerCount(List<Integer> res, int ele){
  48. int low = 0;
  49. int high = res.size();
  50. while(low<high){
  51. int mid = low +(high-low)/2;
  52. if(ele > res.get(mid)){
  53. low = mid+1;
  54. } else {
  55. high = mid;
  56. }
  57. }
  58. return low;
  59. }
  60.  
  61. }
Success #stdin #stdout 0.1s 56560KB
stdin
Standard input is empty
stdout
12