本题坑点大概在除了n以外其他的数据都有可能是浮点数,所以最好都用double类型,涉及到产品数量总量和单价,所以采用结构体来实现
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1001;
struct node
{
double totalprice;
double totalnum;
double perprice;
}a[maxn];
bool cmp (node b,node c)
{
return b.perprice>c.perprice;
}
int main()
{
int n;
double m,total=0;
cin>>n>>m;
for (int i=0;i<n;i++)
scanf("%lf",&a[i].totalnum);
for (int i=0;i<n;i++)
{
scanf("%lf",&a[i].totalprice);
a[i].perprice=a[i].totalprice/a[i].totalnum;
}
sort (a,a+n,cmp);
for (int i=0;i<n;i++)
{
double temp=a[i].totalnum-m;
if (temp>0)
{
total+=m*a[i].perprice;
break;
}
else
{
total+=a[i].totalnum*a[i].perprice;
m-=a[i].totalnum;
}
}
printf("%.2f",total);
}