Submission #755923

#TimeUsernameProblemLanguageResultExecution timeMemory
755923vjudge1Pinball (JOI14_pinball)C++17
0 / 100
1 ms340 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; typedef long long ll; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; const ll MOD = 1e9 + 7; ll mod(ll x, ll m = MOD){return (x + m) % m;} typedef vector<int> vi; typedef vector<ll> vll; typedef pair<ll,ll> pll; typedef vector<pair<int,int>> vpi; #define pb push_back #define ff first #define ss second #define all(x) (x).begin(),(x).end() const int nax = 2005; const ll INF = 1e14; int n, m; int l[nax], r[nax], to[nax]; ll cost[nax]; int corl[nax], corr[nax]; indexed_set nidl, nidr; void solve() { cin >> m >> n; for(int i = m; i >= 1; i--) { cin >> l[i] >> r[i] >> to[i] >> cost[i]; nidl.insert(l[i]); nidr.insert(r[i]); nidl.insert(to[i]); nidr.insert(to[i]); nidl.insert(r[i]); nidr.insert(l[i]); } int szl = nidl.size(); int szr = nidr.size(); ll dp[m + 2][szl + 1][szr + 1]; for(int i = 1; i <= m; i++) { l[i] = nidl.order_of_key(l[i]); r[i] = nidr.order_of_key(r[i]); } int cnt = 0; for(auto e: nidl) { corl[cnt++] = e; } cnt = 0; for(auto e: nidr) corr[cnt++] = e; ll ans = INF; for(int i = m + 1; i >= 0; i--) { int b = (i & 1); for(int j = 0;j < szl; j++) { for(int k = 0; k < szr; k++) { if(i == m + 1) { if(j == 0 && k == szr - 1) dp[i][j][k] = 0ll; else dp[i][j][k] = INF; } else { dp[i][j][k] = dp[i + 1][j][k]; if(i != 0 && to[i] >= corl[j] && to[i] <= corr[k]) { dp[i][j][k] = min(dp[i + 1][j][k], dp[i + 1][min(j, l[i])][max(k, r[i])] + cost[i]); } } if(i == 0 && corl[j] == corr[k]) ans = min(ans, dp[i][j][k]); } } } cout << ans; } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while(tt--) solve(); }

Compilation message (stderr)

pinball.cpp: In function 'void solve()':
pinball.cpp:65:13: warning: unused variable 'b' [-Wunused-variable]
   65 |         int b = (i & 1);
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...