#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn = 100000;
int item[maxn];
int coupon[maxn];
bool cmp(int a, int b)
{
return a>b;
}
struct node{
int i,j;
friend bool operator < (node a, node b){
return item[a.i]-coupon[a.j]>item[b.i]-coupon[b.j];
}
};
int main()
{
int N,D;
scanf("%d%d",&N,&D);
for(int i=0; i<N; i++){
scanf("%d",&item[i]);
}
for(int i=0; i<N; i++){
scanf("%d",&coupon[i]);
}
sort(item,item+N);
sort(coupon,coupon+N,cmp);
priority_queue<node> q;
node tmp;
for(int i=0; i<N; i++){
tmp.i= i;
tmp.j = 0;
q.push(tmp);
}
int cost,cnt;
cnt = 0;
do{
tmp = q.top();
q.pop();
cost = item[tmp.i]-coupon[tmp.j];
if(D>=cost){
D-=cost;
cnt++;
if(tmp.j!=N-1){
tmp.j++;
q.push(tmp);
}
}
else break;
}while(!q.empty()&&D>0);
printf("%d %d\n",cnt,D);
return 0;
}
7-4 Shopping With Coupons (30 分)
最新推荐文章于 2021-09-19 20:24:14 发布