# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1097925 | 2024-10-08T16:00:17 Z | sosuke | A Huge Tower (CEOI10_tower) | C++14 | 0 ms | 0 KB |
MOD = 10**9 + 9 n, d = map(int, input().split()) ar = list(map(int, input().split())) ar.sort() # sort the blocks r = 0 sol = 1 for l in range(n): while r < n - 1 and ar[r + 1] - ar[l] <= d: r += 1 dist = r - l + 1 # largest tower we can build when ar[l] block is the base sol = (sol * dist) % MOD print(sol)