This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);; cin.tie(NULL)
template<class T> struct Seg {
const T ID = 1e18; T comb(T a, T b) { return min(a,b); }
long long n; vector<T> seg;
void init(long long _n) { n = _n; seg.assign(2*n,ID); }
void pull(long long p) { seg[p] = comb(seg[2*p],seg[2*p+1]); }
void upd(long long p, T val) {
p += n;
seg[p] = min(seg[p], val); for (p /= 2; p; p /= 2) pull(p); }
T query(long long l, long long r) {
T ra = ID, rb = ID;
for (l += n, r += n+1; l < r; l /= 2, r /= 2) {
if (l&1) ra = comb(ra,seg[l++]);
if (r&1) rb = comb(seg[--r],rb);
}
return comb(ra,rb);
}
};
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n), b(n), c(n);
vector<long long> L(n), R(n), d(n);
vector<int> total = {0, m-1};
for(int i = 0; i < n; i++) {
cin >> a[i] >> b[i] >> c[i] >> d[i];
a[i]--;
b[i]--;
c[i]--;
total.push_back(a[i]);
total.push_back(b[i]);
total.push_back(c[i]);
}
sort(total.begin(), total.end());
total.erase(unique(total.begin(), total.end()), total.end());
for(auto &x : a){
x = lower_bound(total.begin(), total.end(), x) - total.begin();
}
for(auto &x : b){
x = lower_bound(total.begin(), total.end(), x) - total.begin();
}
for(auto &x : c){
x = lower_bound(total.begin(), total.end(), x) - total.begin();
}
int val = total.size();
for(int t = 0; t < 2; t++) {
Seg<long long> SegTree;
SegTree.init(val);
SegTree.upd(0, 0);
for(int i = 0; i < n; i++) {
L[i] = SegTree.query(a[i], b[i]) + d[i];
SegTree.upd(c[i], L[i]);
a[i] = val - 1 - a[i];
b[i] = val - 1 - b[i];
c[i] = val - 1 - c[i];
swap(a[i], b[i]);
}
L.swap(R);
}
long long ans = (long long)1e18 + 10;
for(int i = 0; i < n; i++){
ans = min(ans, L[i] + R[i] - d[i]);
}
cout << (ans == (long long)1e18 + 10 ? -1 : ans) << "\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |