For this Question: Given an array A of size N and an integer K, find and print the number of pairs of indices i, j (1 <= i < j <= N) such that A<sub>i</sub> * A<sub>j</sub> > K.First line of the input contains two integers N and K.
The second line of the input contains N space seperated integers.

Constraints:
1 <= N <= 10<sup>5</sup>
1 <= K <= 10<sup>12</sup>
1 <= A<sub>i</sub> <= 10<sup>6</sup>Print the number of pairs of indices i, j (1 <= i < j <= N) such that A<sub>i</sub> * A<sub>j</sub> > K.Sample Input:
7 20
5 7 2 3 2 9 1

Sample Output:
5

Explanation:
The following pairs of indices satisfy the condition (1-based indexing)
(1, 2) -> 5 * 7 = 35
(1, 6) -> 5 * 9 = 45
(2, 4) -> 7 * 3 = 21
(2, 6) -> 7 * 9 = 63
(4, 6) -> 3 * 9 = 27
All these products are greater than K (= 20)., I have written this Solution Code: import java.io.*;
import java.util.*;



class Main {
    public static void main (String[] args) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        long K = sc.nextLong();

        long[] arr = new long[N];

        for(int i=0; i<N; i++){
            arr[i] = sc.nextLong();
        }
        Arrays.sort(arr);
        int low = 0;
        int high = N-1;
        long count = 0;

        while(low<high){
            long num = arr[low]*arr[high];
            if(num>K){
                count += high-low;
                high--;
            } else {
                low++;
            }
        }
        System.out.println(count);
    }
}, In this Programming Language: Java, Now tell me if this Code is compilable or not?