ABC 106 D AtCoderExpress2【Python】

問題はこちら

1次元区間の問題なのに2次元累積和が使えるのがおもしろい。

N, M, Q = map(int, input().split())
plot = [[0]*(N + 2) for _ in range(N + 2)]
for _ in range(M):
   L, R = map(int, input().split())
   plot[L][R] += 1
   
for l in reversed(range(N + 1)):
   for r in range(N + 1):
       plot[l][r] += plot[l + 1][r] + plot[l][r - 1] - plot[l + 1][r - 1]

for _ in range(Q):
   p, q = map(int, input().split())
   print(plot[p][q])


この記事が気に入ったらサポートをしてみませんか?