#include <bits/stdc++.h>
#define pii pair<int,int>
#define F first
#define int long long
#define S second
#define mp make_pair
using namespace std;
bool check(int s , vector<int>& d , vector<int>& f){
int li = 0 , rest = s ;
for(int i=0;i<d.size();i++){
if(d[i]-li>rest) return 0 ;
rest -= (d[i]-li) ;
rest+=f[i] ;
li = d[i] ;
}
return 1 ;
}
int bs(int lw , int ur , int D , map<int,vector<pii>> s){
int l = lw , r = ur ;
vector<int> d , f ;
for(auto x : s){
vector<pii> v = x.S ;
for(pii y : v) {
d.push_back(y.F) ;
f.push_back(y.S) ;
}
}
d.push_back(D) ;
while(r-l-1){
int md = (r+l)/2 ;
if(check(md,d,f)){
r= md ;
}
else l = md ;
}
return r ;
}
signed main(){
int n ,D;
cin>>n>>D ;
//a[i] -> how much fuel he can get in the ith station
//b[i] -> F <= b[i] condition
//d[i] -> distance from start
//d -> finish line
map<int,vector<pii>> s ;
for(int i=0;i<n;i++){
int f , b,d ;
cin>>d>>f>>b ;
s[b].push_back(mp(d,f)) ;
}
for(auto x : s){
vector<pii> v = x.S ;
sort(v.begin(),v.end()) ;
s[x.F]= v ;
}
multiset<int> r ;
multiset<pii> ur ;
int rest = 0 , li = 0 ;
r.insert(0) ;
ur.insert(mp(D,0)) ;
for(auto x : s){
int F = x.F ;
vector<pii> fs = x.S ;
for(pii y : fs) ur.insert(y) ;
rest+= F-li ;
auto it = r.end() ;
it-- ;
int big = *it ;
while(big>=(*(ur.begin())).F){
rest+=(*ur.begin()).S ;
r.insert((*ur.begin()).F) ;
ur.erase(ur.begin()) ;
}
while(ur.size()&&(*ur.begin()).F-big<=rest){
r.insert((*ur.begin()).F) ;
rest+= (*ur.begin()).S ;
rest-= ((*ur.begin()).F-big) ;
big = (*ur.begin()).F ;
ur.erase(ur.begin()) ;
}
if(ur.empty()){
cout << bs(li,F,D,s) ;
return 0 ;
}
li = F ;
}
cout << D ;
return 0 ;
}
Compilation message
FuelStation.cpp: In function 'bool check(long long int, std::vector<long long int>&, std::vector<long long int>&)':
FuelStation.cpp:10:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
10 | for(int i=0;i<d.size();i++){
| ~^~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
6 |
Correct |
1 ms |
256 KB |
Output is correct |
7 |
Correct |
1 ms |
256 KB |
Output is correct |
8 |
Correct |
0 ms |
256 KB |
Output is correct |
9 |
Correct |
1 ms |
360 KB |
Output is correct |
10 |
Correct |
1 ms |
256 KB |
Output is correct |
11 |
Correct |
1 ms |
256 KB |
Output is correct |
12 |
Correct |
1 ms |
256 KB |
Output is correct |
13 |
Correct |
1 ms |
256 KB |
Output is correct |
14 |
Correct |
1 ms |
256 KB |
Output is correct |
15 |
Correct |
1 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1024 ms |
61380 KB |
Output is correct |
2 |
Correct |
1067 ms |
61448 KB |
Output is correct |
3 |
Correct |
964 ms |
61192 KB |
Output is correct |
4 |
Correct |
967 ms |
61412 KB |
Output is correct |
5 |
Correct |
997 ms |
61964 KB |
Output is correct |
6 |
Correct |
926 ms |
60620 KB |
Output is correct |
7 |
Correct |
1041 ms |
60700 KB |
Output is correct |
8 |
Correct |
954 ms |
61292 KB |
Output is correct |
9 |
Correct |
1082 ms |
61936 KB |
Output is correct |
10 |
Correct |
928 ms |
60804 KB |
Output is correct |
11 |
Correct |
957 ms |
60672 KB |
Output is correct |
12 |
Correct |
983 ms |
61372 KB |
Output is correct |
13 |
Correct |
916 ms |
60700 KB |
Output is correct |
14 |
Correct |
971 ms |
61400 KB |
Output is correct |
15 |
Correct |
1008 ms |
61332 KB |
Output is correct |
16 |
Correct |
993 ms |
61868 KB |
Output is correct |
17 |
Correct |
990 ms |
61988 KB |
Output is correct |
18 |
Correct |
977 ms |
61468 KB |
Output is correct |
19 |
Correct |
957 ms |
61352 KB |
Output is correct |
20 |
Correct |
950 ms |
61500 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
17 ms |
1272 KB |
Output is correct |
3 |
Incorrect |
17 ms |
1408 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
17 ms |
1272 KB |
Output is correct |
3 |
Incorrect |
17 ms |
1408 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
6 |
Correct |
1 ms |
256 KB |
Output is correct |
7 |
Correct |
1 ms |
256 KB |
Output is correct |
8 |
Correct |
0 ms |
256 KB |
Output is correct |
9 |
Correct |
1 ms |
360 KB |
Output is correct |
10 |
Correct |
1 ms |
256 KB |
Output is correct |
11 |
Correct |
1 ms |
256 KB |
Output is correct |
12 |
Correct |
1 ms |
256 KB |
Output is correct |
13 |
Correct |
1 ms |
256 KB |
Output is correct |
14 |
Correct |
1 ms |
256 KB |
Output is correct |
15 |
Correct |
1 ms |
256 KB |
Output is correct |
16 |
Correct |
0 ms |
256 KB |
Output is correct |
17 |
Incorrect |
1 ms |
256 KB |
Output isn't correct |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
6 |
Correct |
1 ms |
256 KB |
Output is correct |
7 |
Correct |
1 ms |
256 KB |
Output is correct |
8 |
Correct |
0 ms |
256 KB |
Output is correct |
9 |
Correct |
1 ms |
360 KB |
Output is correct |
10 |
Correct |
1 ms |
256 KB |
Output is correct |
11 |
Correct |
1 ms |
256 KB |
Output is correct |
12 |
Correct |
1 ms |
256 KB |
Output is correct |
13 |
Correct |
1 ms |
256 KB |
Output is correct |
14 |
Correct |
1 ms |
256 KB |
Output is correct |
15 |
Correct |
1 ms |
256 KB |
Output is correct |
16 |
Correct |
1 ms |
256 KB |
Output is correct |
17 |
Correct |
17 ms |
1272 KB |
Output is correct |
18 |
Incorrect |
17 ms |
1408 KB |
Output isn't correct |
19 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
6 |
Correct |
1 ms |
256 KB |
Output is correct |
7 |
Correct |
1 ms |
256 KB |
Output is correct |
8 |
Correct |
0 ms |
256 KB |
Output is correct |
9 |
Correct |
1 ms |
360 KB |
Output is correct |
10 |
Correct |
1 ms |
256 KB |
Output is correct |
11 |
Correct |
1 ms |
256 KB |
Output is correct |
12 |
Correct |
1 ms |
256 KB |
Output is correct |
13 |
Correct |
1 ms |
256 KB |
Output is correct |
14 |
Correct |
1 ms |
256 KB |
Output is correct |
15 |
Correct |
1 ms |
256 KB |
Output is correct |
16 |
Correct |
1024 ms |
61380 KB |
Output is correct |
17 |
Correct |
1067 ms |
61448 KB |
Output is correct |
18 |
Correct |
964 ms |
61192 KB |
Output is correct |
19 |
Correct |
967 ms |
61412 KB |
Output is correct |
20 |
Correct |
997 ms |
61964 KB |
Output is correct |
21 |
Correct |
926 ms |
60620 KB |
Output is correct |
22 |
Correct |
1041 ms |
60700 KB |
Output is correct |
23 |
Correct |
954 ms |
61292 KB |
Output is correct |
24 |
Correct |
1082 ms |
61936 KB |
Output is correct |
25 |
Correct |
928 ms |
60804 KB |
Output is correct |
26 |
Correct |
957 ms |
60672 KB |
Output is correct |
27 |
Correct |
983 ms |
61372 KB |
Output is correct |
28 |
Correct |
916 ms |
60700 KB |
Output is correct |
29 |
Correct |
971 ms |
61400 KB |
Output is correct |
30 |
Correct |
1008 ms |
61332 KB |
Output is correct |
31 |
Correct |
993 ms |
61868 KB |
Output is correct |
32 |
Correct |
990 ms |
61988 KB |
Output is correct |
33 |
Correct |
977 ms |
61468 KB |
Output is correct |
34 |
Correct |
957 ms |
61352 KB |
Output is correct |
35 |
Correct |
950 ms |
61500 KB |
Output is correct |
36 |
Correct |
1 ms |
256 KB |
Output is correct |
37 |
Correct |
17 ms |
1272 KB |
Output is correct |
38 |
Incorrect |
17 ms |
1408 KB |
Output isn't correct |
39 |
Halted |
0 ms |
0 KB |
- |