1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| ''' Author: NEFU AB-IN Date: 2022-02-23 16:11:57 FilePath: \ACM\Acwing\802.py LastEditTime: 2022-02-23 16:41:23 ''' N = int(1e5 + 100) b = [0] * N a = [] xs = [] INF = int(2e9)
def findl(x): l, r = 0, len(xs) - 1 while l < r: mid = l + r >> 1 if xs[mid] >= x: r = mid else: l = mid + 1 return r
def findr(x): l, r = 0, len(xs) - 1 while l < r: mid = l + r + 1 >> 1 if xs[mid] <= x: l = mid else: r = mid - 1 return r
n, m = map(int, input().split()) for i in range(n): x, c = map(int, input().split()) a.append([x, c]) xs.append(x)
xs = [-INF, *xs, INF] xs = list(set(xs)) xs.sort()
for i in range(len(a)): t = a[i][0] L = findl(t) b[L] += a[i][1]
for i in range(1, len(b)): b[i] += b[i - 1]
for i in range(m): l, r = map(int, input().split()) L = findl(l) R = findr(r) print(b[R] - b[L - 1])
|