AtCoder Beginner Contest 208を振り返る
全体の感想
B問題の解法がすぐには思い浮かばずちょっと冷や汗を来ましたが、C問題までは解けました。D問題は問題みて諦めてしまったので解説動画を見てみようと思います。私はグラフ問題が弱いです。
C - Fair Candy Distribution
お菓子の数Kと国民の人数N、国民一人一人の国民番号が整数列Aで与えられるので、お菓子を国民番号が小さい順に配っていき国民毎に何個のお菓子が配られたかを出力する問題
比較的素直にお菓子の数(K)を国民の数(N)で割って(Q)、余り(M)が配られる人にはQに1足して出力しました。
余りが配られる人の出し方ですが、国民の数列Aを背番号順に並べて余り(M)の番号より前にいる場合は配られると判断しました。
n, k = map(int, input().split())
a = list(map(int, input().split()))
sorted_a = sorted(a)
q, m = divmod(k, n)
thresholed = sorted_a[m]
for i in a:
if i < thresholed:
print(q + 1)
else:
print(q)
次回
D問題はΣが3つ並んでいる問題文を見た瞬間に諦めたので解説動画などをみて理解を深めたいと思います。理解出来たら復讐のために記事にしてみようと思います。
この記事が気に入ったらサポートをしてみませんか?