#include<iostream>
#include<algorithm>
using namespace std;
struct mooncake{
double inventory,price,cmp;
};
bool cmp(mooncake a,mooncake b)
{
return a.cmp>b.cmp;
}
int main()
{
int n;
double demand,sum=0;
cin>>n>>demand;
mooncake cake[n];
int i;
for(i=0;i<n;i++) cin>>cake[i].inventory;
for(i=0;i<n;i++) cin>>cake[i].price;
for(i=0;i<n;i++) cake[i].cmp=cake[i].price/cake[i].inventory;
sort(cake,cake+n,cmp);
for(i=0;i<n;i++){
if(cake[i].inventory==0) continue;
if(demand>=cake[i].inventory){ //我全都要
sum+=cake[i].price;
demand-=cake[i].inventory;
}else{ //要不起
sum+=cake[i].price*demand/cake[i].inventory;
cake[i].inventory-=demand;
demand=0;
}
if(demand==0) break;
}
printf("%.2f\n",sum);
return 0;
}
PAT A 1070 Mooncake
最新推荐文章于 2024-07-27 01:25:42 发布