問題概要
問題ページ
-
D - Water Heater
問題ページへ移動する
問題文
給湯器が \(1\) つあり、毎分 \(W\) リットルのお湯を供給することができます。
\(N\) 人の人がいます。\(i\) 番目の人は時刻 \(S_i\) から \(T_i\) までの間 (時刻 \(T_i\) ちょうどを除く)、この湯沸かし器で沸かしたお湯を毎分 \(P_i\) リットル使おうと計画しています。お湯はすぐ冷めてしまうので、溜めておくことはできません。
すべての人に計画通りにお湯を供給することはできますか?
制約
- \(1\leq N \leq 2\times 10^5\)
- \(0\leq S_i < T_i \leq 2\times 10^5\)
- \(1\leq W, P_i \leq 10^9\)
- 入力はすべて整数
問題の考察
ACコード
import sys
import itertools
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
n, w = list(map(int, input().rstrip('\n').split()))
ls = [0] * (10 ** 5 * 3)
for i in range(n):
s, t, p = list(map(int, input().rstrip('\n').split()))
ls[s] += p
ls[t] -= p
ls = list(itertools.accumulate(ls))
for i in range(len(ls)):
if ls[i] > w:
print("No")
exit()
print("Yes")
if __name__ == '__main__':
solve()