172952025-06-19 17:47:29algoproSzökőkútpypy3Time limit exceeded 30/1001.093s75240 KiB
# UUID: 0231d01b-a26f-4141-8506-d41a4761fe11
from sys import stdin, stdout
input = stdin.readline
print = stdout.write

def solv():
    kov = [[0] * 19 for _ in range(100011)]
    ert = [[0] * 19 for _ in range(100011)]
    szel = [0] * 100011
    kap = [0] * 100011

    n,q = map(int,input().split())

    for i in range(1, n + 1):
        szel[i],kap[i] = map(int,input().split())

    s = [n+1]
    szel[n + 1] = 10**9 + 10

    for i in range(n, 0, -1):
        while szel[s[-1]] <= szel[i]:
            s.pop()
        kov[i][0] = s[-1]
        ert[i][0] = kap[i]
        s.append(i)

    for j in range(1, 19):
        for i in range(1, n + 1):
            kov[i][j] = kov[kov[i][j - 1]][j - 1]
            ert[i][j] = ert[i][j - 1] + ert[kov[i][j - 1]][j - 1]

    output = []
    for _ in range(q):
        kezd, hany = map(int,input().split())

        for i in range(18,-1,-1):
            if kezd == n + 1:
                break
            if ert[kezd][i] < hany:
                hany -= ert[kezd][i]
                kezd = kov[kezd][i]
        #output.append(str(0 if kezd > n else kezd))
        print(str(0 if kezd > n else kezd)+'\n')

    #print('\n'.join(output))

solv()
SubtaskSumTestVerdictTimeMemory
subtask130/30
1Accepted127ms65676 KiB
2Accepted146ms68284 KiB
3Accepted128ms68312 KiB
4Accepted137ms69060 KiB
5Accepted136ms69096 KiB
6Accepted150ms68924 KiB
7Accepted134ms68824 KiB
subtask20/30
1Time limit exceeded1.042s75240 KiB
2Accepted823ms74636 KiB
subtask30/40
1Accepted136ms68972 KiB
2Accepted632ms70740 KiB
3Time limit exceeded1.093s74948 KiB
4Accepted898ms73160 KiB
5Accepted634ms71912 KiB
6Accepted611ms72164 KiB