Official

B - 気温チェック / Temperature Check Editorial by sounansya


\(A_L+A_{L+1}+\ldots+A_R\) は累積和を用いることで高速に計算できます。

したがって、\(A\) の累積和を計算し、各クエリ \(O(1)\) 時間で判定することでこの問題に正答することができます。

実装例(Python3)

n, m = map(int, input().split())
a = list(map(int, input().split()))
b = [0] * (n + 1)
for i in range(n):
    b[i + 1] = b[i] + a[i]
for i in range(m):
    l, r, k = map(int, input().split())
    if b[r] - b[l - 1] >= k:
        print("Dangerous")
    else:
        print("Safe")

posted:
last update: