Official
A - 応援要請 / Request for Support Editorial
by
A - 応援要請 / Request for Support Editorial
by
harurun4635
必要な作業回数は(問題文に書かれている通り) \(S = \displaystyle\sum_{i=1}^{N} \lceil A_i / K \rceil\) です。
多くの言語で「 floor (切り捨て除算)」は標準に実装されていることが多いですが、「ceil (切り上げ除算)」に簡単に求められる言語は多くありません。ただ \(A \ge 0, B \gt 0\) であれば \(\displaystyle \Big \lceil \frac{A}{B} \Big \rceil = \Big \lfloor \frac{A + B - 1}{B} \Big \rfloor\) であることが知られていますから、これを利用して求められます。
そして、もし \(S \gt M\) ならば \(S - M\) 回の要請が必要で、そうでなければ \(0\) 回です。 これは簡単には \(\max(S-M, 0)\) と書く事もできます。
実装例
n, m, k = map(int, input().split())
a = list(map(int, input().split()))
print(max(sum(((x + k - 1) // k) for x in a) - m, 0))
posted:
last update: