# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
373908 | 2021-03-06T03:13:04 Z | jfyen | A Huge Tower (CEOI10_tower) | Java 11 | 0 ms | 0 KB |
import java.util.*; public class CEOI_A_Huge_Tower { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int D = sc.nextInt(); long mod = 1000000009; int[] blocks = new int[N]; for (int i = 0;i<N;i++) { blocks[i] = sc.nextInt(); } Arrays.sort(blocks); long[] place = new long[N]; long[] towers = new long[N]; towers[0] = 1; //place[0] = 1; int lower = 0; for (int i = 0;i<N;i++) { while(lower<i) { if(blocks[lower]+D<blocks[i]) lower++; else break; } //System.out.println(i+" "+lower); place[i] = (i-lower+1)%mod; } //System.out.println(Arrays.toString(place)); for (int i = 1;i<N;i++) { towers[i] = (place[i]*towers[i-1])%mod; } System.out.println(towers[N-1]%mod); } }