Advertisement
GokulDeep

Diff pairs

Jun 21st, 2024
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1. /* package codechef; // don't place package name! */
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5.  
  6. /* Name of the class has to be "Main" only if the class is public. */
  7. public class Main
  8. {
  9.     public static void main (String[] args) throws java.lang.Exception,IOException {
  10.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11.  
  12.         String[] firstLine = br.readLine().split(" ");
  13.         int N = Integer.parseInt(firstLine[0]);
  14.         int K = Integer.parseInt(firstLine[1]);
  15.  
  16.         String[] numsStr = br.readLine().split(" ");
  17.         int[] nums = new int[N];
  18.         for (int i = 0; i < N; i++) {
  19.             nums[i] = Integer.parseInt(numsStr[i]);
  20.         }
  21.         Arrays.sort(nums);
  22.         getC(N, K, nums);
  23.     }
  24.  
  25.     private static void getC(int N, int K, int[] nums) {
  26.         int i = 0, j = 1;
  27.         long c = 0;
  28.         while (j < N) {
  29.             int d = nums[j] - nums[i];
  30.             if (d < K) {
  31.                 j++;
  32.             } else if (d > K) {
  33.                 i++;
  34.                 if (i == j) {
  35.                     j++;
  36.                 }
  37.             } else {
  38.                 int c1 = 0, c2 = 0, p = nums[i], q = nums[j];
  39.                 if (d == 0) {
  40.                     while (nums[i] == p) {
  41.                         c1++;
  42.                         i++;
  43.                         j++;
  44.                     }
  45.                     c += c1 * (c1 - 1) / 2;
  46.                     // System.out.println("P1 " + c);
  47.                     // return;
  48.                 } else {
  49.                     while (i < N &&nums[i] == p) {
  50.                         c1++;
  51.                         i++;
  52.                     }
  53.                     while (j < N && nums[j] == q) {
  54.                         c2++;
  55.                         j++;
  56.                     }
  57.                     c += c1 * c2;
  58.  
  59.                 }
  60.             }
  61.         }
  62.         System.out.println(c);
  63.     }
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement