Submission #994239

#TimeUsernameProblemLanguageResultExecution timeMemory
994239vjudge1Sightseeing in Kyoto (JOI22_kyoto)C++17
10 / 100
215 ms256796 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MAXN = 4010; ll dp[MAXN][MAXN], a[MAXN], b[MAXN], idxa[MAXN], idxb[MAXN], timera = 1, timerb = 1; set<ll> hva, hvb; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= m; i++) cin >> b[i]; for (int i = 0; i < MAXN; i++) { for (int j = 0; j < MAXN; j++) { dp[i][j] = 1e18; } } for (int i = 1; i <= n; i++) { if (!hva.count(a[i]) || i == n || 1) { hva.insert(a[i]); idxa[timera++] = i; } } for (int i = 1; i <= m; i++) { if (!hvb.count(b[i]) || i == m || 1) { hvb.insert(b[i]); idxb[timerb++] = i; } } dp[1][1] = 0; for (int i = 1; i < timera; i++) { for (int j = 1; j < timerb; j++) { dp[i][j+1] = min(dp[i][j+1], dp[i][j] + a[i] * (idxb[j+1] - idxb[j])); dp[i+1][j] = min(dp[i+1][j], dp[i][j] + b[j] * (idxa[i+1] - idxa[i])); } } cout << dp[timera-1][timerb-1] << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...