func_code_string: #include <bits/stdc++.h>   #pragma optimization_level 3   #pragma GCC optimize( Ofast,no-stack-protector,unroll-loops,fast-math,O3 )   #pragma GCC target( sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx )   using namespace std;   const long long N = 5e5 + 3;   const long long mod = 998244353;   const long long INF = 0x7f7f7f7f7f7f7f7f;   const int INFi = 0x7f7f7f7f;   long long test = 1, n, m, x, y, k, b[N], a[N];   vector<long long> v;   long long ch(int l, int r) {     long long mx = max(a[l], a[r]), res = 0;     set<long long> s1, s2;     for (int i = l + 1; i < r; i++) {       if (a[i] > mx) s1.insert(i);       s2.insert(i);     }     if (s2.size() < k and s1.size()) {       cout << -1 <<   n ;       exit(0);     }     if (k * x > y) {       res = (s2.size() / k) * y + (s2.size() % k) * x;     } else {       if (s1.size())         res = y + (s2.size() - k) * x;       else         res = s2.size() * x;     }     return res;   }   void solve() {     cin >> n >> m >> y >> k >> x;     for (int i = 1; i <= n; i++) cin >> a[i];     for (int i = 1; i <= m; i++) cin >> b[i];     a[0] = a[n + 1] = b[0] = b[m + 1] = 0;     int j = 1;     v.push_back(0);     for (int i = 1; i <= n; i++)       if (a[i] == b[j]) j++, v.push_back(i);     v.push_back(n + 1);     if (j != m + 1) {       cout << -1 <<   n ;       return;     }     long long ans = 0;     for (int i = 1; i <= m + 1; i++) {       ans += ch(v[i - 1], v[i]);     }     cout << ans <<   n ;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cout << fixed;     cout << setprecision(15);     ;     for (int i = 1; i <= test; i++) {       solve();     }   }   