#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
const int MAX = 1010;
struct Mooncake
{
double inventory;
double price;
double cp; // cost performance
bool operator < (const Mooncake &a) const
{
return cp > a.cp;
}
}mooncake[MAX];
int main()
{
int N, D;
cin >> N >> D;
for (int i = 0; i < N; i++)
cin >> mooncake[i].inventory;
for (int i = 0; i < N; i++)
cin >> mooncake[i].price;
for (int i = 0; i < N; i++)
mooncake[i].cp = mooncake[i].price / mooncake[i].inventory;
sort(mooncake, mooncake + N);
double sum = 0;
int i = 0;
while (D > 0 && i <= N)
{
int v;
if (D <= mooncake[i].inventory)
v = D;
else
v = mooncake[i].inventory;
sum += v * mooncake[i].cp;
D -= v;
i++;
}
cout << fixed << setprecision(2) << sum << endl;
return 0;
}
PAT (Advanced) 1070. Mooncake (25)
最新推荐文章于 2022-06-13 17:18:16 发布