#include<stdio.h>
#include<stdlib.h>
typedef struct NodeType{
float amount;
float price;
float profit;
}Node;
Node node[1005];
int cmp(const void* ta,const void* tb){
Node* a=(Node*)ta;
Node* b=(Node*)tb;
return b->profit>a->profit;//don't use b->profit-a->profit,beause the result is float-float,but the return is int.
}
int main(){
int i,n;
float d;
scanf("%d %f",&n,&d);
for(i=0;i<n;i++){
scanf("%f",&node[i].amount);
}
for(i=0;i<n;i++){
scanf("%f",&node[i].price);
node[i].profit=node[i].price/node[i].amount;
}
qsort(node,n,sizeof(Node),cmp);
float total=0;
i=0;
while(d>0&&i<n){
if(d>node[i].amount){
total=total+node[i].price;
d=d-node[i].amount;
}
else{
total=total+d/node[i].amount*node[i].price;
d=0;
}
i++;
}
printf("%.2f\n",total);
return 0;
}
浙大PAT 1070题 1070. Mooncake
最新推荐文章于 2022-09-17 16:41:15 发布