Submission #1271597

#TimeUsernameProblemLanguageResultExecution timeMemory
1271597lechaaPinball (JOI14_pinball)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<int> d; int idx(int k){ auto it = lower_bound(d.begin(), d.end(), k); return (it - d.begin()); } vector<int> t; void update(int i, int l, int r, int i1, int v){ if(l == r){ t[i] = v; return; } int mid = (l+r)/2; if(i1 <= mid){ update(i*2, l, mid, i1, v); }else{ update(i*2+1, mid+1, r, i1, v); } t[i] = min(t[i*2], t[i*2+1]); } int query(int i, int l, int r, int l1, int r1){ if(l > r1 || l1 > r){ return 1e18; } if(l1 <= l && r1 >= r){ return t[i]; } int mid = (l + r)/2; return min(query(i*2, l, mid, l1, r1), query(i*2+1, mid+1, r, l1, r1)); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int m, n; cin >> m >> n; vector<array<int, 4>> x(m); for(int i = 0; i < m; i++){ cin >> x[i][0] >> x[i][1] >> x[i][2] >> x[i][3]; d.push_back(x[i][0]); d.push_back(x[i][1]); d.push_back(x[i][2]); } d.push_back(1); d.push_back(n); sort(d.begin(), d.end()); d.erase(unique(d.begin(), d.end()), d.end()); t.resize(d.size()*4, 1e18); vector<int> dp(d.size(), 1e18); update(1, 0, d.size()-1, 0, 0); for(int i = 0; i < m; i++){ int l, r; l = idx(x[i][0]); r = idx(x[i][1]); int c = idx(x[i][2]); int j = query(1, 0, d.size()-1, l, d.size()-1); if(j == 1e18) continue; dp[c] = min(dp[c], j + x[i][3]); update(1, 0, d.size()-1, c, dp[c]); } vector<int> dp1(d.size(), 1e18); t.clear(); t.resize(d.size(), 1e18); update(1, 0, d.size()-1, d.size()-1, 0); for(int i = 0; i < m; i++){ int l, r; l = idx(x[i][0]); r = idx(x[i][1]); int c = idx(x[i][2]); int j = query(1, 0, d.size()-1, 0, r); if(j == 1e18) continue; dp1[c] = min(dp1[c], j + x[i][3]); update(1, 0, d.size()-1, c, dp1[c]); } int mn = 1e18; for(int i = 0; i < m; i++){ int l, r; l = idx(x[i][0]); r = idx(x[i][1]); int c = idx(x[i][2]); mn = min(mn, dp[c] + dp1[c] - x[i][3]); } if(mn == 1e18){ mn = -1; } cout << mn << "\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...