一开始第三个测试不过,把所有参数都改为double 型就好了
#include<iostream>
#include<algorithm>
using namespace std;
struct moon{
double ku;
double price;
double ping;
}m[1000];
bool cmp(moon a,moon b)
{
return a.ping>b.ping;
}
int main()
{
int n;
double num;
cin>>n>>num;
for(int i=0;i<n;i++)
{
cin>>m[i].ku;
}
for(int i=0;i<n;i++)
{
cin>>m[i].price;
m[i].ping = m[i].price / m[i].ku;
}
sort(m,m+n,cmp);
double money;
for(int i=0;i<n;i++)
{
if(num>=m[i].ku)
{
num -= m[i].ku;
money += m[i].price;
}else{
money += m[i].ping*num;
break;
}
}
printf("%.2f",money);
return 0;
}