# UUID: e280199d-58c0-4573-ab7b-7b75c81ece7c
from sys import stdin, stdout
input = stdin.readline
print = stdout.write
MAXN = 100000
MAXQ = 200000
r = [0] * MAXN
cap = [0] * MAXN
qs = [[] for _ in range(MAXN)]
qans = [0] * MAXQ
stack = [0] * MAXN
psum = [0] * (MAXN + 1)
def solv():
n,q = map(int,input().split())
for i in reversed(range(n)):
r[i],cap[i] = map(int,input().split())
for i in range(q):
j, vol = map(int,input().split())
qs[n - j].append((vol, i))
sp = 0
psum[0] = 0
for i in range(n):
while sp > 0 and r[stack[sp - 1]] <= r[i]:
sp -= 1
stack[sp] = i
sp += 1
psum[sp] = psum[sp - 1] + cap[i]
for vol, ansindex in qs[i]:
if vol <= psum[sp]:
st, dr = 0, sp
while dr - st > 1:
mij = (st + dr) // 2
if psum[mij] + vol > psum[sp]:
dr = mij
else:
st = mij
qans[ansindex] = n - stack[st]
else:
qans[ansindex] = 0
for i in range(q):
print(str(qans[i])+'\n')
solv()
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 30/30 | ||||||
| 1 | Elfogadva | 61ms | 27068 KiB | ||||
| 2 | Elfogadva | 74ms | 30448 KiB | ||||
| 3 | Elfogadva | 71ms | 30400 KiB | ||||
| 4 | Elfogadva | 90ms | 30864 KiB | ||||
| 5 | Elfogadva | 82ms | 30952 KiB | ||||
| 6 | Elfogadva | 83ms | 30976 KiB | ||||
| 7 | Elfogadva | 90ms | 31228 KiB | ||||
| subtask2 | 30/30 | ||||||
| 1 | Elfogadva | 279ms | 38544 KiB | ||||
| 2 | Elfogadva | 331ms | 39464 KiB | ||||
| subtask3 | 40/40 | ||||||
| 1 | Elfogadva | 97ms | 31064 KiB | ||||
| 2 | Elfogadva | 240ms | 37840 KiB | ||||
| 3 | Elfogadva | 370ms | 42984 KiB | ||||
| 4 | Elfogadva | 386ms | 44264 KiB | ||||
| 5 | Elfogadva | 384ms | 44356 KiB | ||||
| 6 | Elfogadva | 317ms | 44520 KiB | ||||