Submission #1069996

#TimeUsernameProblemLanguageResultExecution timeMemory
1069996juicy도장 모으기 (JOI14_stamps)C++17
100 / 100
44 ms35912 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif const int N = 3005, inf = 1e9; int n, t; int a[N], b[N], lt[N], rt[N], dp[N][N]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> t; for (int i = 1; i <= n; ++i) { int u, v, d, e; cin >> u >> v >> d >> e; a[i] = u + v; b[i] = d + e; rt[i] = u + e + 2 * t * i; lt[i] = v + d - 2 * t * i; } memset(dp, 0x3f, sizeof(dp)); dp[0][0] = 0; for (int i = 1; i <= n; ++i) { int mn = inf; for (int j = 0; j <= n; ++j) { dp[i][j] = min(dp[i][j], mn); mn = min(mn, dp[i - 1][j]); mn = min(inf, mn + lt[i]); dp[i][j] = min(dp[i][j], dp[i - 1][j] + a[i]); if (j > 0) { dp[i][j] = min(dp[i][j], dp[i - 1][j] + b[i]); } } mn = inf; for (int j = n; j >= 0; --j) { dp[i][j] = min(dp[i][j], mn); mn = min(mn, dp[i - 1][j]); mn = min(inf, mn + rt[i]); } } cout << dp[n][0] + t * (n + 1); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...