公式
A - 倉庫の荷物整理 / Warehouse Cargo Organization 解説
by
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)
投稿日時:
最終更新:
