제출 #1352652

#제출 시각아이디문제언어결과실행 시간메모리
1352652nathlol2Fuel Station (NOI20_fuelstation)C++20
67 / 100
3095 ms29244 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e5 + 5;
int n, d;
tuple<int, int, int> a[N];

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> d;
    vector<int> cand = {0};
    for(int i = 1;i<=n;i++){
        auto &[x, b, c] = a[i];
        cin >> x >> b >> c;
        cand.push_back(c);
    }
    sort(a + 1, a + n + 1);
    sort(cand.begin(), cand.end());
    cand.erase(unique(cand.begin(), cand.end()), cand.end());
    cand.push_back(2e9);
    int ans = d;
    for(int i = 0;i<cand.size();i++){
        int x = cand[i] + 1;
        vector<tuple<int, int, int>> v;
        vector<int> pf;
        v.push_back({0, 0, 0});
        pf.push_back(0);
        for(int i = 1;i<=n;i++){
            if(get<2>(a[i]) >= x) v.push_back(a[i]), pf.push_back(pf.back() + get<1>(a[i]));
        }
        v.push_back({d, 0, 0});
        int cc = 0;
        for(int i = 1;i<v.size();i++){
            cc = max(cc, get<0>(v[i]) - pf[i - 1]);
        }
        if(cc > cand[i + 1]) continue;
        ans = min(ans, cc);
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...