Submission #703430

#TimeUsernameProblemLanguageResultExecution timeMemory
703430piOOESightseeing in Kyoto (JOI22_kyoto)C++17
10 / 100
430 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int h, w; cin >> h >> w; vector<int> a(h), b(w); for (int i = 0; i < h; ++i) { cin >> a[i]; } for (int j = 0; j < w; ++j) { cin >> b[j]; } constexpr int inf = 1e9 + 7; vector<int> pref(h + 1, inf), suf(h + 1, inf); vector<int> rows, columns; for (int i = 0; i < h; ++i) { pref[i + 1] = min(pref[i], a[i]); } for (int i = h - 1; i >= 0; --i) { suf[i] = min(a[i], suf[i + 1]); } for (int i = 0; i < h; ++i) { if (pref[i] > a[i] || suf[i + 1] > a[i]) { rows.push_back(i); } } pref.assign(w + 1, inf), suf.assign(w + 1, inf); for (int i = 0; i < w; ++i) { pref[i + 1] = min(pref[i], b[i]); } for (int i = w - 1; i >= 0; --i) { suf[i] = min(b[i], suf[i + 1]); } for (int i = 0; i < w; ++i) { if (pref[i] > b[i] || suf[i + 1] > b[i]) { columns.push_back(i); } } int n = rows.size(), m = columns.size(); vector dp(h, vector<ll>(w)); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (i == 0 && j == 0) { continue; } dp[i][j] = 1e18; if (i > 0) { dp[i][j] = dp[i - 1][j] + 1LL * b[columns[j]] * (rows[i] - rows[i - 1]); } if (j > 0) { dp[i][j] = min(dp[i][j], dp[i][j - 1] + 1LL * a[rows[i]] * (columns[j] - columns[j - 1])); } } } cout << dp[n - 1][m - 1] << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...