AtCoder ABC 050 B – Contest with Drinks Easy Python解説

2021年11月21日

スポンサーリンク

Contest with Drinks Easy

今回の問題。ドリンクを飲んだ際、問題を解くのに必要な時間の合計を求める。

問題文は長いですがやることはわりとシンプルな問題です。
とりあえず1つドリンクを試すごとに配列を変更し、時間の合計を出していきます。

n = int(input())

t = list(map(int, input().split()))

m = int(input())

for _ in range(m):
    p, x = map(int, input().split())
    i = t[p-1]
    t[p-1] = x
    print(sum(t))
    t[p-1] = i

ドリンクは1本しか飲めないので、時間の合計を出力した後、再度元の時間で初期化しています。
もうひとつの方法として、先にドリンクを飲む前の合計時間を出しておき、そのあとドリンクの差分を出す方法があります。

n = int(input())
 
t = list(map(int, input().split()))
time = sum(t)
 
m = int(input())
 
for _ in range(m):
    p, x = map(int, input().split())
    time -= t[p-1] - x
    print(time)
    time = sum(t)

timeに合計時間を出しておき、そのあと10行目で差分を合計時間から引いています。
こちらもドリンクを飲んだあと、合計時間を初期化することを忘れずに行いましょう。