公式

A - 倉庫の荷物整理 / Warehouse Cargo Organization 解説 by harurun4635


問題文に従い、\(D\) に含まれない番号について \(\lfloor T_i / K \rfloor\) を計算すればよいです。

含まれるかどうかの判定は set を用いるのが簡単でしょう。配列に含まれるかの判定は \(1\) 要素あたり \(O(M)\) かかりますが、 set にすることで \(O(\log M)\)\(O(1)\) での判定ができます。

また \(\lfloor T_i / K \rfloor\) については「整数の切り捨て除算」として多くの言語に標準的に実装されています。

計算量は \(O((N + M) \log M)\) 程度です。


実装例

n, m, k = map(int, input().split())
t = list(map(int, input().split()))
d = set(map(int, input().split())) if m else set()

ans = 0
for i, x in enumerate(t, 1):
    if not i in d:
        ans += x // k
print(ans)

投稿日時:
最終更新: