답안 #266941

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
266941 2020-08-15T14:29:12 Z REALITYNB Fuel Station (NOI20_fuelstation) C++14
13 / 100
401 ms 64700 KB
        #include <bits/stdc++.h> 
        #define int long long 
        #define pii pair<long long,long long> 
        #define F first 
        #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 ; 
            vector<pii> tot ; 
            for(auto x : s){
                vector<pii> v = x.S ; 
                for(pii y : v) {
                    tot.push_back(y); 
                }
            }
            sort(tot.begin(),tot.end()) ; 
            for(pii& x : tot) d.push_back(x.F) ; 
            for(pii& x : tot) f.push_back(x.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(){
        	ios_base::sync_with_stdio(0) ; 
        	cin.tie(0) ; 
        	cout.tie(0) ; 
        	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 << bs(li,D,D,s)  ; 
        	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:26: 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 1 ms 384 KB Output is correct
2 Incorrect 1 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 345 ms 64076 KB Output is correct
2 Correct 348 ms 64032 KB Output is correct
3 Correct 346 ms 63904 KB Output is correct
4 Correct 374 ms 64032 KB Output is correct
5 Correct 375 ms 64532 KB Output is correct
6 Correct 350 ms 63388 KB Output is correct
7 Correct 350 ms 63392 KB Output is correct
8 Correct 352 ms 64024 KB Output is correct
9 Correct 346 ms 64700 KB Output is correct
10 Correct 346 ms 63392 KB Output is correct
11 Correct 355 ms 63332 KB Output is correct
12 Correct 358 ms 64028 KB Output is correct
13 Correct 359 ms 63536 KB Output is correct
14 Correct 351 ms 64040 KB Output is correct
15 Correct 399 ms 64032 KB Output is correct
16 Correct 400 ms 64640 KB Output is correct
17 Correct 367 ms 64664 KB Output is correct
18 Correct 367 ms 64064 KB Output is correct
19 Correct 351 ms 63948 KB Output is correct
20 Correct 401 ms 63964 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 288 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 288 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Incorrect 1 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Incorrect 1 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Incorrect 1 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -