# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1097925 | sosuke | A Huge Tower (CEOI10_tower) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
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)