Submission #821252

#TimeUsernameProblemLanguageResultExecution timeMemory
821252danikoynovSightseeing in Kyoto (JOI22_kyoto)C++14
10 / 100
5 ms468 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; typedef long long ll; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const int maxn = 1e3 + 10; const ll inf = 1e18; int h, w; ll a[maxn], b[maxn], dp[maxn]; void solve() { cin >> h >> w; for (int i = 1; i <= h; i ++) cin >> a[i]; for (int i = 1; i <= w; i ++) cin >> b[i]; for (int i = 1; i <= w; i ++) dp[i] = (ll)1 * (-a[1]); /**cout << "---------" << endl; for (int j = 1; j <= w; j ++) cout << dp[j] << " "; cout << endl;*/ for (int i = 2; i <= h; i ++) { /**for (int j = 1; j <= w; j ++) cout << dp[j] << " "; cout << endl;*/ ll cur = inf, pos = 1, old_dp = dp[1]; dp[1] += (ll)(1) * (a[i - 1] - a[i]) + b[1]; cur = dp[1]; for (int j = 2; j <= w; j ++) { /// dp[j] - old_dp + (ll)(j - pos) * (a[i - 1] - a[i]) + b[j] - b[pos] < 0 if (dp[j] - old_dp + (ll)(j - pos) * (a[i - 1] - a[i]) + b[j] - b[pos] < 0) { old_dp = dp[j]; dp[j] += (ll)(j) * (a[i - 1] - a[i]) + b[j]; cur = dp[j]; pos = j; } else { assert(dp[j] + (ll)(j) * (a[i - 1] - a[i]) + b[j] >= cur); dp[j] = cur; } /**dp[j] += (ll)(j) * (a[i - 1] - a[i]) + b[j]; dp[j] = min(dp[j], cur); cur = min(cur, dp[j]);*/ } //if (i != h) // for (int j = 2; j <= w; j ++) //dp[j] = min(dp[j], dp[j - 1]); } cout << w * a[h] + dp[w] << endl; } int main() { solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...