Submission #823596

# Submission time Handle Problem Language Result Execution time Memory
823596 2023-08-12T20:08:07 Z jackliy369 A Huge Tower (CEOI10_tower) Python 3
0 / 100
1000 ms 75836 KB
N, D = map(int, input().split())
blocks = sorted(list(map(int, input().split())))

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

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

def multiply(a, n):
    if n == 2:
        return a << 1
    elif n == 3:
        return a + (a << 1)
    elif n == 4:
        return a << 2
    elif n == 5:
        return a + (a << 2)
    elif n == 6:
        return (a << 1) + (a << 2)
    elif n == 7:
        return (a << 3) - a
    elif n == 8:
        return a << 3
    elif n == 9:
        return a + (a << 3)
    elif n == 10:
        return (a << 1) + (a << 3)
    elif n == 11:
        return a + (a << 1) + (a << 3)
    elif n == 12:
        return (a << 2) + (a << 3)
    elif n == 13:
        return a + (a << 2) + (a << 3)
    elif n == 14:
        return (a << 4) - (a << 1)
    elif n == 15:
        return (a << 4) - a
    else:
        return a * n

ans = 1
i = 0
j = 1
while j < N:
    prev_j = j
    while i < j and blocks[j] > blocks[i] + D:
        i += 1
    # i = binary_search_i(i, j - 1, blocks[j], blocks)
    # if i < j:
    #     j = binary_search_j(prev_j, N - 1, blocks[i], blocks)
    # for k in range(prev_j, j):
        # ans *= (k - i + 1)
    if i < j:
        ans *= j - i + 1
        if ans > 2000000000:
            ans = ans % 1000000009
    else:
        j += 1
    

print(ans % 1000000009)
# Verdict Execution time Memory Grader output
1 Execution timed out 1080 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1076 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1083 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1069 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1084 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1072 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1074 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1062 ms 2900 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1072 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1070 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1082 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1078 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1051 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1076 ms 3028 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1078 ms 3076 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1083 ms 3112 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1081 ms 4060 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1081 ms 8544 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1081 ms 30636 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1085 ms 75836 KB Time limit exceeded
2 Halted 0 ms 0 KB -