AtCoder ABC 161 B – Popular Vote Python解説

スポンサーリンク

Popular Vote

N 種類の商品に対して人気投票を行いました。商品 i は Ai 票を得ています。
この中から人気商品 M 個を選びます。ただし、得票数が総投票数の 1 / 4M 未満であるような商品は選べません。
人気商品 M 個を選べるなら Yes、選べないなら No を出力してください。

AtCoder Beginner Contest 「Popular Vote」

人気商品M個を選び、得票数が総投票数の1 / 4M以上か見ていきます。

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

a = sorted(a, reverse=True)

for i in range(m):
    if a[i] < sum(a) / (4 * m):
        print("No")
        break
else:
    print("Yes")

配列aに得票数を入れたら得票数順になるように降順でソートします。
for文ではa[i] < sum(a) / (4 * m)で得票数が総投票数の1 / 4Mを満たしているかチェックして完了です。

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

a = sorted(a, reverse=True)

if a[m - 1] >= sum(a) / (4 * m):
    print("Yes")
else:
    print("No")

こちらの解き方は上記とさほど変わりませんが、人気商品M個のうち、人気順でM番目の商品が条件を満たしていれば他の人気商品も条件を満たしているので、M番目の商品だけの条件をみる方法です。

AtCoderB問題

Posted by cheese