題目如下:LINK
代碼如下:
#include <iostream>
#include <vector>
#include <algorithm>
struct mooncake
{
float totalWeight;
float totalPrice;
double unitPrice;
};
bool mooncakeCmp(mooncake a, mooncake b) //按月餅價格降序排列
{
return a.unitPrice > b.unitPrice;
}
using namespace std;
int main()
{
int N, D;
while (cin >> N >> D)
{
vector<mooncake> a(N);
for (int i = 0; i < N; i++)
{
cin >> a[i].totalWeight;
}
for (int j = 0; j < N; j++)
{
cin >> a[j].totalPrice;
}
for (int k = 0; k < N; k++)
{
a[k].unitPrice = a[k].totalPrice / a[k].totalWeight;
}
sort(a.begin(), a.end(), mooncakeCmp);
//跟據規則,先拿單位價格最高的
float price = 0.0;
for (int m = 0; m < N; m++)
{
if (a[m].totalWeight > D)
{
price += a[m].unitPrice * D;
break;
}
else
{
price += a[m].totalPrice;
D = D - a[m].totalWeight;
}
}
//輸出結果
printf("%.2f", price);
}
return 0;
}