参考https://www.acwing.com/solution/content/13511/
def find(num,x):
l,r = -1,len(num)
while l+1 != r:
mid = l + r >> 1
if num[mid] >= x:
r = mid
else:
l = mid
return r
n, m = map(int, input().split())
loc_temp,num_temp = [],[]
for _ in range(n):
x,c = map(int,input().split())
loc_temp.append(x)
num_temp.append(c)
query = []
for _ in range(m):
query += list(map(int,input().split()))
loc = [i for i in loc_temp] + query
loc = sorted(list(set(loc)))
num = [0 for i in loc]
for i in range(n):
num[find(loc,loc_temp[i])] += num_temp[i]
# 注意这里是 += ,因为在n次操作中会对同一位置多次插入
del num_temp,loc_temp
for i in range(1,len(num)):
num[i] += num[i-1]
for i in range(0,len(query),2):
l,r = query[i:i+2]
l,r = find(loc,l),find(loc,r)
ans = num[r] - (num[l-1] if l-1 >=0 else 0)
print( ans )