先求出最佳及格方案,再求最多可做题数
wa #1,#2
#include<bits/stdc++.h>
using namespace std;
struct nn{
int ts,s,w;
}a[99999];
bool cmp(nn a,nn b){
return a.w*b.s >b.w*a.s;
}
bool cmp1(nn a,nn b){
return a.ts<b.ts;
}
int n,m,k,r,f,sj;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m>>k>>r;
for(int i=1;i<=n;i++){
cin>>a[i].ts;
}
for(int i=1;i<=m;i++){
cin>>a[i].s;
}
for(int i=1;i<=m;i++){
cin>>a[i].w;
}
sort(a+1,a+1+n,cmp);
int p=1;
while(f<k){//不及格
r-=a[p].s;
f+=a[p].w;
p++;
}
sort(a+1,a+1+n,cmp1);
int ans=0;
p=1;
while(r>0){
r-=a[p].ts;
ans++;
p++;
}
cout<<ans;
return 0;
}