제출 #1175277

#제출 시각아이디문제언어결과실행 시간메모리
1175277nguyenkhangninh99Fuel Station (NOI20_fuelstation)C++20
37 / 100
3095 ms7484 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int maxn = 3e5 + 5; struct ttt{ int x, a, b; } tram[maxn]; bool cmp(ttt c1, ttt c2){ return c1.x < c2.x; } int n, d; bool check(int mid){ int fuel = mid; for(int i = 1; i <= n; i++){ if(fuel >= tram[i].x) fuel += tram[i].a; else return false; } return true; } bool check2(int f){ int fuel = f; for(int i = 1; i <= n; i++){ if(fuel >= tram[i].x){ if(f <= tram[i].b) fuel += tram[i].a; } else return false; } return true; } void solve(){ cin >> n >> d; int mn = 1e9; for(int i = 1; i <= n; i++){ cin >> tram[i].x >> tram[i].a >> tram[i].b; mn = min(mn, tram[i].b); } sort(tram + 1, tram + n + 1, cmp); if(n == 1){ if(max(tram[1].x, d - tram[1].a) <= tram[1].b) cout << max(tram[1].x, d - tram[1].a); else cout << d; } else if(mn == 1e9){ int l = 1, r = d, ans = 1; while(l <= r){ int mid = (l + r) / 2; if(check(mid)){ ans = mid; r = mid - 1; } else l = mid + 1; } cout << ans; } else{ for(int f = 1; f <= d; f++){ if(check2(f)){ cout << f; return; } } } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); 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...