考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC050-B - Contest with Drinks Easy を解く

ABC050-B - Contest with Drinks Easy

 

入力もやたら多いし、問題文も読み解くのが難しい…

サンプルにシミュレーションの例が書いてあるのでそれを見た方がよさそうだ

 

サンプルと合わせて見てなんとなくわかった

N個の数列ががあり、その中の1つが変更されたときの和を求める問題のようだ

 

制約を見るに、変更する度に1から和を計算しても間に合う気もするけれど…

それよりも一度、変更なしの場合の和を求めておいて

変更によってどれ程量が変化したのかを足し引きするのが簡単そうだ

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N=int(input())
tl=list(map(int,input().split()))
M=int(input())

# 和
sm=sum(tl)

al=[]
for i in range(M):
  P,X=map(int,input().split())

  # 変更した場合の変化量を求める
  a=X-tl[P-1]

  # 解答を保存
  al.append(sm+a)

# 出力
for x in al:
  print(x)

 

提出結果はACでした