カウントした値を持ってからクエリを処理する系っていうパターン。 別の方法もある。先に持ち点から全クエリ分引き算しておいて正解したら足す。
概要
問題
・最初の時点で全員ポイントもっている。
・回クイズを行って、
回目に正解した
以外のポイントが1ずつ減少
・クイズが終わったとき、ポイントが 1以上残っているかどうかを判定
解くときに考えた内容
愚直にやると、
人分
回処理があるので
要するに各人のマイナスポイントさえわかれば、から引けばいい。マイナスポイントは、
が正解した数
誰が何回正解したかをカウントする。そこで、
から
について、
<
が正解した数 を計算して判定すればいい。
自分は思いつかなかったが、どちらにカッコをつけるかで、イメージが変わる。 として後から正解者に1ポイント足していくというのでも同じ。
コード
from collections import Counter n, k, q = map(int, input().split()) a = [int(input()) for i in range(q)] a_c = Counter(a) for i in range(1, n+1): if 0 < k + a_c.get(i, 0) - q: print('Yes') else: print('No') # そもそも全員からq引いて、当たった人に1足すってやればよかった... # n, k, q = map(int, input().split()) # l = [k-q] * n # for i in range(q): # a = int(input()) # l[a-1] += 1 # for i in range(n): # if l[i] > 0: # print('Yes') # else: # print('No')