제출 #1309503

#제출 시각아이디문제언어결과실행 시간메모리
1309503haught_veathFuel Station (NOI20_fuelstation)C++20
0 / 100
3092 ms14392 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 1e6; const int inf = 1e18; int dp[maxn]; struct information{ int x,f,r; bool operator <(const information a)const { return x < a.x; } }; int n,h; vector<information> a; bool check(int x){ int m = a.size(); fill(dp, dp + m, -1); dp[0] = x; for(int i = 1; i < m; i++){ for(int j = 0; j < i; j++){ if(dp[j] < 0) continue; int cost = dp[j] - (a[i].x - a[j].x); if(cost >= 0){ dp[i] = max(dp[i], min(cost, a[i].r) + a[i].f); } } if(a[i].x >= h && dp[i] >= 0) return true; } return false; } void solve(){ int l = 0, r = inf; int ans = 0; while(l <= r){ int mid = (l+r)/2; if(check(mid)) { r = mid-1; ans = mid; } else l = mid + 1; } cout << ans; } signed main(){ ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr); cin >> n >> h; a.resize(n+1); for(int i = 1;i<=n;i++) cin >> a[i].x >> a[i].f >> a[i].r; a.push_back({h,0,inf}); sort(a.begin()+1,a.end()); solve(); }
#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...