【ABC161 B】「Popular Vote」を解く【Python3】

abc161b

「AtCoder」解説一覧へ

N種類の商品の人気投票を行い、得票数が総投票数の(1/4M)以上である人気商品をM個選べるかどうかを判定する問題です。

提出
n, m = map(int, input().split())
a = list(map(int, input().split()))

a.sort(reverse=True)
su = sum(a)

for i in range(m):
    if a[i] < su/(4*m):
        print("No")
        exit(0)

print("Yes")

商品iの得票数Aiの入力をリストにし、降順でソートします。

こうすることで得票が高い順に条件をみなしているかどうかを判定できます。

for文を用いて、総投票数(su = sum(a))の1/4M未満かどうかを調べます。

1/4M未満であれば、人気商品M個を選べないことになるので、「No」を出力し、プログラムを終了させます。

for文をM回回しても、1/4M未満の商品が現れない場合に「Yes」を出力します。

【ABC161】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です