公式

C - 赤点回避作戦 / Operation: Avoid Failing Grades 解説 by sounansya


まず、既に正の点数を取っている科目については補修を行う必要はありません。

非負の点数を取っている科目について、その点数を \(-x\) 点とすると必要な補修の回数は \(\displaystyle \left\lfloor \frac{x+P}P\right\rfloor\) 回です。したがって、この値が小さい順に補修を行い、\(K\) 回以下の補修で赤点となるテストの数の個数の最小値を求めれば良いです。

実装例(Python3)

n, k, p = map(int, input().split())
h = [-x for x in map(int, input().split()) if x <= 0]
h.sort()
ans = 0
for i in range(len(h)):
    c = (h[i] + p) // p
    if c > k:
        print(len(h) - i)
        exit()
    k -= c
print(0)