#include using namespace std; #if __has_include("Today's/debug.cpp") #include "Today's/debug.cpp" #else #define debug(...) #define print_line #define debugc(...) #define cerr \ if (false) cerr #endif #include using namespace atcoder; long long op(long long a, long long b) { return min(a, b); } long long e() { return LLONG_MAX; } int main() { int N, M, K; cin >> N >> M >> K; vector C(N); for (int i = 0; i < N; i++) { cin >> C[i]; C[i]--; } vector A(M); for (int i = 0; i < M; i++) { cin >> A[i]; } segtree st(M); for (int i = 0; i < M; i++) { st.set(i, A[i] * K); } long long ans = LLONG_MAX; for (int i = 0; i < K; i++) { st.set(C[i], st.get(C[i]) - A[C[i]]); } for (int i = 0; i + K <= N; i++) { ans = min(ans, st.all_prod()); st.set(C[i], st.get(C[i]) + A[C[i]]); if (i + K < N) { st.set(C[i + K], st.get(C[i + K]) - A[C[i + K]]); } } cout << ans << endl; }