如果要求浮点数,那么事先就都用浮点数,别用int
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
double n=0,d=0;
struct y
{
double num=0;
double price=0;
}object[1100];
bool cmp(y a,y b)
{
return a.price>b.price;
}
int main()
{
cin>>n>>d;
for(int i=0;i<n;i++)
{
cin>>object[i].num;
}
for(int i=0;i<n;i++)
{
double a=0;
cin>>a;
object[i].price=a/object[i].num;
}
sort(&object[0],&object[(int)n],cmp);
double money=0;
for(int i=0;i<n;i++)
{
if(d>0)
{
if(d>object[i].num)
{
money+=object[i].num*object[i].price;
d=d-object[i].num;
}
else
{
money+=d*object[i].price;
d=0;
}
}
else
break;
}
printf("%.2lf",money);
}