제출 #1138663

#제출 시각아이디문제언어결과실행 시간메모리
1138663QuantumPiA Huge Tower (CEOI10_tower)Java
65 / 100
551 ms90912 KiB
import java.io.*;
import java.util.*;

public class tower {
    public static void main(String[] args) throws IOException {
        BufferedReader fin = new BufferedReader(new InputStreamReader(System.in));
        //BufferedReader fin = new BufferedReader(new FileReader("C:\\Users\\AnshulRaghav\\Desktop\\USACO Problems\\Problems\\test.in"));
		    PrintWriter fout = new PrintWriter(System.out);

        StringTokenizer st = new StringTokenizer(fin.readLine());
        int n = Integer.parseInt(st.nextToken());
        int d = Integer.parseInt(st.nextToken());
        ArrayList<Integer> nums = new ArrayList<>();
        st = new StringTokenizer(fin.readLine());
        for (int i=0; i<n; i++) {
            nums.add(Integer.parseInt(st.nextToken()));
        }
        Collections.sort(nums);
        //fout.println(nums);
        long ans = 1;
        for (int i=1; i<n; i++) {
            if (nums.get(i)-d <= nums.get(0)) {
                ans *= i+1;
                continue;
            }
            int low = 0;
            int high = i-1;
            while (low < high) {
                int mid = (low+high+1)/2;
                if (nums.get(i)-d > nums.get(mid)) {
                    low = mid;
                }
                else {
                    high = mid-1;
                }
            }
            ans *= i-low;
            ans %= 1000000009;
        }
        fout.println(ans);

        fin.close();
        fout.close();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...