Submission #503782

#TimeUsernameProblemLanguageResultExecution timeMemory
503782colossal_pepePinball (JOI14_pinball)C++17
29 / 100
1076 ms96300 KiB
#include <iostream> #include <map> #include <tuple> using namespace std; typedef long long ll; const ll INF = 1e18; int n, m, a[1005], b[1005], c[1005]; ll d[1005]; map<tuple<int, int, int>, ll> dp; ll brutus(int i, int l, int r) { if (l == r) return 0; if (i >= n) return INF; if (dp.find({i, l, r}) != dp.end()) return dp[{i, l, r}]; ll ans = INF; ans = min(ans, brutus(i + 1, l, r)); if (a[i] <= l and b[i] >= r) { ans = min(ans, brutus(i + 1, c[i], c[i]) + d[i]); } else if (a[i] <= l) { ans = min(ans, brutus(i + 1, c[i], r) + d[i]); } else if (b[i] >= r) { ans = min(ans, brutus(i + 1, l, c[i]) + d[i]); } dp[{i, l, r}] = ans; return ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; for (int i = 0; i < n; i++) { cin >> a[i] >> b[i] >> c[i] >> d[i]; } brutus(0, 1, m); cout << (dp[{0, 1, m}] >= INF ? -1 : dp[{0, 1, m}]) << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...