测试点2:
库存和总售价不一定为整数,详见注释
正确代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct Cake{
float num, price, mean; // 误定义为int num, price; float mean;
// num为库存,price为价格,mean为亿元/万吨
}cake[1000];
bool cmp(Cake a, Cake b) {
return a.mean > b.mean;
}
int main() {
int n, need, temp;
double revenue = 0;
cin >> n >> need;
for(int i = 0; i < n; i++)
cin >> cake[i].num;
for(int i = 0; i < n; i++)
cin >> cake[i].price;
for(int i = 0; i < n; i++)
cake[i].mean = cake[i].price * 1.0 / cake[i].num;
sort(cake, cake + n, cmp);
for(int i = 0; i < n; i++) {
if(need == 0) break;
if(cake[i].num <= need) {
revenue += cake[i].price;
need -= cake[i].num;
} else {
revenue += 1.0 * need / cake[i].num * cake[i].price;
need = 0;
}
}
printf("%.2f", revenue);
return 0;
}