Submission #645998

#TimeUsernameProblemLanguageResultExecution timeMemory
645998ymmPinball (JOI14_pinball)C++17
0 / 100
5 ms9684 KiB
#include <bits/stdc++.h> #define Loop(x,l,r) for (ll x = (l); x < (r); ++x) #define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x) typedef long long ll; typedef std::pair<int, int> pii; typedef std::pair<ll , ll > pll; using namespace std; const int N = 100'010; const int M = 300'010; const ll inf = 1e15; int n, m; int a[N], b[N], c[N]; ll d[N]; struct seg { ll t[2*M]; ll get(int l, int r) { l += M; r += M; ll ans = inf; while (l < r) { if (l&1) ans = min(ans, t[l++]); if (r&1) ans = min(ans, t[--r]); l /= 2; r /= 2; } return ans; } void up(int i, ll x) { i += M; while (i) { t[i] = min(t[i], x); i /= 2; } } } dpr, dpl; vector<pair<int,int*>> cmp_vec; int compress() { vector<int> vec; for (auto [x, _] : cmp_vec) vec.push_back(x); sort(vec.begin(), vec.end()); vec.resize(unique(vec.begin(), vec.end()) - vec.begin()); for (auto [x, p] : cmp_vec) { if (p) { *p = lower_bound(vec.begin(), vec.end(), x) - vec.begin(); } } return vec.size(); } void init_dp() { fill(dpr.t, dpr.t + 2*M, inf); fill(dpl.t, dpl.t + 2*M, inf); dpr.up(m-1, 0); dpl.up(0, 0); } ll calc_ans() { init_dp(); ll ans = inf; Loop (dev,0,n) { ans = min( dpl.get(a[dev], b[dev]+1) + dpr.get(a[dev], b[dev]+1) + d[dev], ans); ll mnr = dpr.get(c[dev], b[dev]+1); ll mnl = dpl.get(a[dev], c[dev]+1); dpr.up(c[dev], mnr + d[dev]); dpl.up(c[dev], mnl + d[dev]); } return ans; } int main() { cin.tie(0) -> sync_with_stdio(false); cin >> n >> m; Loop (i,0,n) { cin >> a[i] >> b[i] >> c[i] >> d[i]; cmp_vec.push_back({a[i], &a[i]}); cmp_vec.push_back({b[i], &b[i]}); cmp_vec.push_back({c[i], &c[i]}); } cmp_vec.push_back({1, NULL}); cmp_vec.push_back({m, NULL}); m = compress(); cout << calc_ans() << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...