Submission #23459626


Source Code Expand

def binary_search(data, value):
    left = 0
    right = len(data) - 1
    while left <= right:
        mid = (left + right) // 2
        if data[mid - 1] < value and value <= data[mid]:
            return mid
        elif data[mid] < value:
            left = mid + 1
        elif value <= data[mid - 1]:
            right = mid - 1
    return -1

n, q = map(int, input().split())
a = list(map(int, input().split()))
a = [0] + a
c = [0]

for i in range(1, n + 1):
    c += [c[i - 1] + a[i] - a[i - 1] - 1]

for _ in range(q):
    k = int(input())
    if c[n] < k:
        res = a[n] + k - c[n]
    else:
        idx = binary_search(c, k)
        res = a[idx] - 1 + k - c[idx]
    print(res)

Submission Info

Submission Time
Task D - Kth Excluded
User cubesat
Language PyPy3 (7.3.0)
Score 400
Code Size 721 Byte
Status AC
Exec Time 499 ms
Memory 99168 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 19
Set Name Test Cases
Sample example_00.txt, example_01.txt
All block_00.txt, block_01.txt, block_02.txt, block_03.txt, block_04.txt, example_00.txt, example_01.txt, killer_00.txt, killer_01.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt
Case Name Status Exec Time Memory
block_00.txt AC 485 ms 99168 KiB
block_01.txt AC 396 ms 86468 KiB
block_02.txt AC 305 ms 84880 KiB
block_03.txt AC 300 ms 76444 KiB
block_04.txt AC 171 ms 75264 KiB
example_00.txt AC 50 ms 61940 KiB
example_01.txt AC 49 ms 61868 KiB
killer_00.txt AC 499 ms 99120 KiB
killer_01.txt AC 405 ms 90732 KiB
random_00.txt AC 491 ms 99044 KiB
random_01.txt AC 151 ms 75992 KiB
random_02.txt AC 377 ms 96968 KiB
random_03.txt AC 425 ms 88136 KiB
random_04.txt AC 182 ms 97932 KiB
random_05.txt AC 433 ms 90028 KiB
random_06.txt AC 193 ms 76132 KiB
random_07.txt AC 224 ms 83952 KiB
random_08.txt AC 375 ms 95296 KiB
random_09.txt AC 452 ms 91060 KiB