//Expedition
#include<iostream>
#include<queue>
using namespace std;
const int maxn=100010;
int n,l,p;
int a[maxn];
int b[maxn];
priority_queue<int> que;
void init(){
cin>>n>>p>>l;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
}
void solve(){
int pos=0;
int d;
int tank=p;
int ans=0;
a[n]=l;
b[n]=0;
n++;
for(int i=0;i<n;i++){
d=a[i]-pos;
if(tank-d<0){
if(que.empty()){
puts("-1");
return;
}
tank+=que.top();
que.pop();
ans++;
}
tank-=d;
pos=a[i];
que.push(b[i]);
}
cout<<ans<<endl;
}
int main(){
init();
solve();
return 0;
}
算法入门 11.优先队列题目 -Expedition
最新推荐文章于 2022-01-02 17:52:51 发布