【ABC141 C】「Attack Survival」を解く【Python3】

abc141c

コンテスト一覧へ

 

早押しクイズ大会に参加したN人が、それぞれ勝ち抜けたかどうかを求める問題です。

最初はKポイント、Q回問題を出し、最終的に0以下かどうかを調べます。

1人正解で、それ以外の参加者のポイントが減るのですが、「正解しなかった側」の処理を毎回すると間に合わないので、「正解した側」のポイントを変動させていく方法で作成します。

提出
n, k, q = map(int, input().split())
b = [k - q] * n

for i in range(q):
    ai = int(input())
    b[ai - 1] += 1

for j in range(n):
    if b[j] > 0:
        print("Yes")
    else:
        print("No")

N,K,Q を受け取ったあとに、N人のポイントを処理するリストを作成します。

リストの要素はすべて「K-Q」です。

ここから、正解者のみポイントを足していき、最終的に1以上のポイントを持つ参加者は「Yes」、そうでない場合は「No」を出力するようにします。

入力例1では、すべて「−1」になります。2回以上正解した人(参加者3のみ)が、「Yes」となります。

プログラムのインデックスは0始まりなのに対し、問題文は1始まりなので、そこは注意が必要ですね。

【ABC141】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。