제출 #692485

#제출 시각아이디문제언어결과실행 시간메모리
692485saayan007Visiting Singapore (NOI20_visitingsingapore)C++17
4 / 100
227 ms262144 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pi = pair<int, int>; using pl = pair<ll, ll>; using vi = vector<int>; using vl = vector<ll>; using vpi = vector<pi>; using vpl = vector<pl>; #define fur(i, a, b) for(ll i = a; i <= (ll) b; ++i) #define ruf(i, a, b) for(ll i = a; i >= (ll) b; --i) #define fr first #define sc second #define mp make_pair #define pb push_back #define eb emplace_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define nl "\n" const ll inf = 1e10L; ll cost(ll x, ll y) { if(y & 1) { return 1; } return 0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll k, n, m, a, b; cin >> k >> n >> m >> a >> b; ll v[k + 1], s[n + 1], t[m + 1]; fur(i, 1, k) { cin >> v[i]; } fur(i, 1, n) { cin >> s[i]; } fur(i, 1, m) { cin >> t[i]; } ll dp[n + 1][m + 1][4]; fur(i, 0, n) { fur(j, 0, m) { fur(x, 0, 3) dp[i][j][x] = -inf; } } ll res = -inf; dp[0][0][3] = 0; fur(j, 1, m) { dp[0][j][2] = a; } res = max(res, dp[0][m][2]); fur(i, 1, n) { fur(j, 1, m) { fur(y, 0, 3) { dp[i][j][1] = max(dp[i][j][1], dp[i - 1][j][y] + a * (y % 4 > 1)); dp[i][j][2] = max(dp[i][j][2], dp[i][j - 1][y] + a * (y % 4 < 2)); if(s[i] == t[j]) { dp[i][j][3] = max(dp[i][j][3], v[s[i]] + a * ((i > 1) + (j > 1))); dp[i][j][3] = max(dp[i][j][3], dp[i - 1][j - 1][y] + v[s[i]]); } } } fur(x, 0, 3) res = max(res, dp[i][m][x]); } cout << res << nl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...