题目链接
坑点
除了N外,别的数据类型均设置为double
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
int kind;
double need;
double inventory[1000],total_price[1000];
cin>>kind>>need;
int i;
double price[1000],profit=0;
for(i=0;i<kind;i++)
{
scanf("%lf",&inventory[i]);
}
for(i=0;i<kind;i++)
{
scanf("%lf",&total_price[i]);
price[i]=(total_price[i])/ inventory[i];
}
while(need)
{
int j=distance(price,max_element(price,price+kind));
if(need>inventory[j] && inventory[j]!=0)
{
need-=inventory[j];
inventory[j]=0;
profit+=total_price[j];
}
else
{
profit+=price[j]*need;
need=0;
}
price[j]=0;
}
printf("%.2f",profit);
return 0;
}