Official
C - Default Price Editorial
by
C - Default Price Editorial
by
nok0
\(i\) 番目の皿の値段を求めることを考えます。 これは、\(j=1,2,\ldots,M\) の順に \(C_i=D_j\) か判定し、\(C_i=D_j\) なる \(j\) が存在すれば \(P_j\) 円、存在しない場合 \(P_0\) 円と求めることができます。
これを全ての \(i\) に対して行うことで、 \(\mathrm{O}(NM)\) でこの問題を解くことができます。
また、例えば c++ では std::map
のようなデータ構造を使うことでより良い計算量で解くこともできます。
実装例(Python):
n, m = map(int, input().split())
c = list(input().split())
d = list(input().split())
p = list(map(int, input().split()))
ans = 0
for v in c:
price = p[0]
for j in range(m):
if v == d[j]:
price = p[j + 1]
break
ans += price
print(ans)
posted:
last update: