Submission #1353109

#TimeUsernameProblemLanguageResultExecution timeMemory
1353109hyyhFuel Station (NOI20_fuelstation)C++20
24 / 100
3093 ms8624 KiB
#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
#include <unordered_map>

using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
#define f first
#define s second
#define endl '\n'
#define all(x) begin(x),end(x)

int main(){
    int n;cin >> n;
    int d;cin >> d;
    vector<piii> vc;
    vector<int> checking;
    for(int i{};i < n;i++){
        int a,b,c;cin >> a >> b >> c;
        vc.emplace_back(a,b,c);
        checking.emplace_back(c);
    }
    vc.emplace_back(d,0,0);
    sort(all(vc));
    sort(all(checking));
    checking.erase(unique(all(checking)),checking.end());
    int ans = d;
    int si = checking.size();
    for(int i{};i < si;i++){
        int F = checking[i];
        int cur = 0;
        int val = 0;
        int last = 0;
        for(auto [a,b,c]:vc){
            cur -= a-last;
            val = max(val,-cur);
            if(c >= F) cur += b;
            last = a;
        }
        if(val <= F){
            ans = min(ans,val);
        }
        //cout << F << " " << val << endl;
    }
    cout << ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...