一、思路
月饼按单价降序销售。
测试点3错误:注意库存量应为浮点存储;
二、代码
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct
{
double amount, price;
}item;
int main()
{
int N;
double sum = 0, sell, D;
scanf("%d %lf", &N, &D);
vector<item> cakes(N);
for( int i = 0; i < N; ++i )
scanf("%lf", &cakes[i].amount);
for( int i = 0; i < N; ++i )
{
double temp;
scanf("%lf", &temp);
cakes[i].price = temp / cakes[i].amount;
}
sort( cakes.begin(), cakes.end(), [](item a, item b){ return a.price > b.price; } );
for( int i = 0; i < N && D; ++i )
{
sell = min( D, cakes[i].amount );
D -= sell;
sum += sell * cakes[i].price;
}
printf("%.2f", sum);
}