#include<bits/stdc++.h>
using namespace std;
struct ss{
int a;
int b;
}s[100000];
bool ssa(ss s1,ss s2){
return s1.a,s2.a;
}
int main()
{
long long n,b,g,ans=0;
cin>>n;
priority_queue<int> q;
for(int i=0;i<n;i++)
{
cin>>s[i].a>>s[i].b;
}
cin>>b>>g;
for(int i=0;i<n;i++){
s[i].a=b-s[i].a;
}
sort(s,s+n,ssa);
for(int i=0;i<n;i++){
if(g>=b)
break;
else if(g>=s[i].a){
q.push(s[i].b);
}
else{
if(!q.empty()){
g+=q.top();
q.pop();
ans++;
i--;
}
else{
ans=-1;
break;
}
}
}
cout<<ans<<endl;
return 0;
}
7-8 加油站之最小加油次数 (10 分)
于 2022-03-03 09:39:13 首次发布