답안 #797695

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
797695 2023-07-29T19:04:42 Z jackliy369 A Huge Tower (CEOI10_tower) Python 3
90 / 100
1000 ms 72880 KB
from cmath import sqrt
from math import floor, log2


N, D = map(int, input().split())
blocks = sorted(list(map(int, input().split())))

def binary_search(l, r, size, list):
    ans = r + 1
    while r >= l:
        # m = (l + r) // 2
        m = l + floor(log2(r - l + 1))
        if size <= list[m] + D:
            r = m - 1
            ans = m
        else:
            l = m + 1
    return ans

ans = 1
tower = [blocks[0]]
index = 0
for i in range(1, N):
    possibilities = 1
    index = binary_search(index, len(tower) - 1, blocks[i], tower)
    possibilities += len(tower) - index
    ans *= possibilities
    tower.append(blocks[i])

print(ans % 1000000009)
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 2860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 2900 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 2812 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 2868 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 2772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 2824 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 2888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 2892 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 2832 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 2864 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 2796 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 2904 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 2900 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 2848 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 2956 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 3028 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 49 ms 4044 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 542 ms 8392 KB Output is correct
2 Correct 621 ms 8576 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1068 ms 30608 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1082 ms 72880 KB Time limit exceeded
2 Halted 0 ms 0 KB -