注意库存小于需求量的情况
#pragma warning(disable:4996)
#include<iostream>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct info
{
double weight;
double price;
}infor[1010];
int main()
{
int n;
double sum;
scanf("%d %lf", &n, &sum);
for (int i = 0; i < n; i++)
{
scanf("%lf", &infor[i].weight);
}
for (int i = 0; i < n; i++)
{
scanf("%lf", &infor[i].price);
}
for (int i = 1; i <= n - 1; i++)
{
for (int j = 0; j <= n - i; j++)
{
if (infor[j].price / infor[j].weight < infor[j + 1].price / infor[j + 1].weight)
{
info temp = infor[j];
infor[j] = infor[j + 1];
infor[j + 1] = temp;
}
}
}
int tempsum = 0;
double sumprice = 0;
for (int i = 0; tempsum < sum&&i < n; i++)
{
if (infor[i].weight < sum - tempsum)
{
tempsum = tempsum + infor[i].weight;
sumprice = sumprice + infor[i].price;
}
else
{
sumprice = sumprice + infor[i].price*((sum - tempsum) / infor[i].weight);
break;
}
}
printf("%.2f", sumprice);
}