简单的结构体排序,注意输出就好
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
struct node{
double w;
double v;
double c;
}a[N];
bool cmp(node a,node b)
{
return a.c>b.c;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
cin>>a[i].w;
}
for(int i=0;i<n;i++)
{
cin>>a[i].v;
a[i].c=a[i].v/a[i].w;
}
sort(a,a+n,cmp);
double wei=0,ans=0;
for(int i=0;i<n;i++)
{
if(wei>=m)
{
break;
}
if(wei+a[i].w<=m)
{
ans+=a[i].v;
wei+=a[i].w;
//cout<<ans<<endl;
}
else
{
int j=m-wei;
ans+=j*a[i].c;
break;
}
}
printf("%.2f",ans);
return 0;
}