现在的位置: 首页 > 综合 > 正文

浙大PAT 1070题 1070. Mooncake

2018年02月06日 ⁄ 综合 ⁄ 共 685字 ⁄ 字号 评论关闭
#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;
}

抱歉!评论已关闭.