Untitled

 avatar
meda
c_cpp
2 months ago
1.0 kB
4
Indexable
#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
template<class T>
void printff(vector<T>& v) {
  for (auto k : v) cout << k << " ";
  cout << endl;
}
void SOLVE() {
  ll n, m, a, b, c; cin >> n >> m >> a >> b >> c;
  string s, t; cin >> s >> t;

  vector<vector<ll>> dp(n + 1, vector<ll>(m + 1, -1));
  function<ll(int, int)> solve =[&] (int i, int j){
    if(i == n) return a * (m - j);
    if(j == m) return b * (n - i);

    ll & ret = dp[i][j];
    if(ret != -1) return ret;
    ret = 1e15;
    if(s[i] == t[j]){
        return ret = solve(i + 1, j + 1);
    }else{
        ll option_1 = a + solve(i, j + 1);
        ll option_2 = b + solve(i + 1, j);
        ll option_3 = c + solve(i + 1, j + 1);
        ret = min({option_1, option_2, option_3});
    }
    return ret;
  };
  cout << solve(0, 0) << endl;
}
int main() {
  ios_base::sync_with_stdio(false); 
  cin.tie(NULL); 
  cout.tie(NULL);
  int tc = 1; //cin >> tc;
  while(tc--) SOLVE();
  return 0;
}
Leave a Comment