POJ_Prob.ID:2431

POJ:2431   P76

#include <stdio.h>
#include<cstring>
#include<algorithm>
#include<queue>


using namespace std;
const int N=10000005;


int main() {
    int L,P,N;
    int A[N];
    int B[N];
    
    scanf("%d",&N);
    for(int i=N-1;i>=0;i--)
        scanf("%d %d",&A[i],&B[i]);
    
    scanf("%d %d",&L,&P);
    for(int i=0;i<N-1;i++)
        A[i]=L-A[i];
    
        
    
    
//    把终点也认为是加油站
    A[N]=L;
    B[N]=0;
    N++;
     
    
    priority_queue<int> que;
    int ans =0,pos=0,tank=P;
    for(int i=0;i<N;i++){
        int d=A[i]-pos;
        while (tank-d<0){
            if(que.empty()){
                puts("-1");
                return 0;
                


            }
            tank+=que.top();
            que.pop();
            ans++;
            
        }
        tank-=d;
        pos=A[i];
        que.push(B[i]);
    }
    printf("%d\n",ans);
    return 0;
}

実行中の間違いました

リリース9件のオリジナルの記事 ウォン称賛13 ビュー9508

おすすめ

転載: blog.csdn.net/ABV09876543210/article/details/105061485