#include <bits/stdc++.h>
typedef long long ll;
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
ll n, d;
std::cin >> n >> d;
struct Station {
ll x, a, b;
};
std::vector<Station> a(n);
std::set<ll> b_vals;
for (auto &i : a) {
std::cin >> i.x >> i.a >> i.b;
b_vals.insert(i.b);
}
std::sort(a.begin(), a.end(), [](Station a, Station b) { return a.x < b.x; });
auto f = [&](ll F) {
ll fuel = 0, pos = 0, ans = F;
for (ll i = 0; i < n; ++i) {
fuel -= a[i].x - pos;
ans = std::min(ans, fuel);
fuel += a[i].a * (F <= a[i].b);
pos = a[i].x;
}
return -std::min(ans, fuel - (d - pos));
};
ll ans = d, prev = 0;
// fix the number of activated stations
for (auto &b : b_vals) {
if (b < prev) {
continue;
}
ll val = f(b);
if (val <= b) {
ans = val;
break;
}
prev = val;
}
std::cout << 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |