#include <bits/stdc++.h>
#define int long long
using namespace std;
struct station{
int x;
int a;
int b;
};
int n, d, answer;
vector<station> arr;
int x1, a1, b1;
bool cmp(const station &s1, const station &s2) {
return s1.x < s2.x;
}
bool check(int f){
int fuel = f;
int pos = 0;
// cout << "STARTING WITH " << f << endl;
for(int i = 0; i <= n - 1; i++){
fuel = fuel - (arr[i].x - pos);
if(fuel < 0){
return false;
}
if(f <= arr[i].b){
fuel = fuel + arr[i].a;
}
pos = arr[i].x;
// cout << fuel << " ";
}
// cout << endl << endl;
return fuel >= 0;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> d;
for(int i = 1; i <= n; i++){
cin >> x1 >> a1 >> b1;
arr.push_back({x1, a1, b1});
}
if (n == 1) {
int x = arr[0].x, a = arr[0].a, b = arr[0].b;
int need = max(x, d - a);
if (need <= b){
cout << need;
} else{
cout << d;
}
return 0;
}
sort(arr.begin(), arr.end(), cmp);
// for(int i = 0; i <= n - 1; i++){
// cout << arr[i].x << " " << arr[i].a << " " << arr[i].b << endl;
//
for(int i = 1; i <= d; i++){
if(check(i)){
cout << i;
return 0;
}
}
}
| # | 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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |