Submission #1279323

#TimeUsernameProblemLanguageResultExecution timeMemory
1279323Bui_Quoc_CuongPinball (JOI14_pinball)C++20
0 / 100
3 ms4920 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int n, m; int a[N], b[N], c[N], d[N]; namespace sub1 { long long dp[N][3]; void solve () { vector <int> seg; for (int i = 1; i <= n; i++) { seg.push_back(i); } sort(seg.begin(), seg.end(), [&] (int i, int j) { return a[i] < a[j]; }); memset(dp, 0x3f, sizeof dp); for (int i = 0; i < n; i++) { if (a[seg[i]] == 1) { dp[seg[i]][0] = 0; } for (int j = 0; j < i; j++) { if (seg[j] < seg[i] && c[seg[j]] >= a[seg[i]] && c[seg[j]] <= b[seg[i]]) { dp[seg[i]][0] = min(dp[seg[i]][0], dp[seg[j]][0]); } } dp[seg[i]][0]+= d[seg[i]]; } reverse(seg.begin(), seg.end()); for (int i = 0; i < n; i++) { if (b[seg[i]] == m) { dp[seg[i]][1] = 0; } for (int j = 0; j < i; j++) { if (seg[j] < seg[i] && c[seg[j]] >= a[seg[i]] && c[seg[j]] <= b[seg[i]]) { dp[seg[i]][1] = min(dp[seg[i]][1], dp[seg[j]][1]); } } dp[seg[i]][1]+= d[seg[i]]; } long long ans = 1e18; for (int i = 1; i <= n; i++) { ans = min(ans, dp[i][0] + dp[i][1] - d[i]); } cout << (ans >= 1e18 ? - 1 : ans); } } namespace sub2 { long long dp[N][3]; void solve () { memset(dp, 0x3f, sizeof dp); for (int i = 1; i <= n; i++) { if (a[i] == 1) dp[i][0] = d[i]; for (int j = 1; j < i; j++) { if (a[i] <= c[j] && c[j] <= b[i]) { dp[i][0] = min(dp[i][0], dp[j][0] + d[i]); } } } for (int i = n; i >= 1; i--) { if (b[i] == m) dp[i][1] = d[i]; for (int j = i + 1; j <= n; j++) { if (a[i] <= c[j] && c[j] && b[i]) { dp[i][1] = min(dp[i][1], dp[j][1] + d[i]); } } } long long ans = 1e18; for (int i = 1; i <= n; i++) { ans = max(ans, dp[i][0] + dp[i][1] - d[i]); } cout << (ans >= 1e18 ? - 1 : ans); } } void solve () { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i] >> b[i] >> c[i] >> d[i]; } // return sub1 :: solve(); return sub2 :: solve(); } signed main () { ios_base::sync_with_stdio(0); cin.tie(0); #define kieuoanh "joi14_pinball" if (fopen(kieuoanh".inp", "r")) { freopen(kieuoanh".inp", "r", stdin); freopen(kieuoanh".out", "w", stdout); } solve(); return 0; }

Compilation message (stderr)

pinball.cpp: In function 'int main()':
pinball.cpp:93:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   93 |         freopen(kieuoanh".inp", "r", stdin); freopen(kieuoanh".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
pinball.cpp:93:53: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   93 |         freopen(kieuoanh".inp", "r", stdin); freopen(kieuoanh".out", "w", stdout);
      |                                              ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...