算法笔记118-119
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
double cun;
double shou;
double bi;
}nodes[1010];
bool cmp(node a,node b)
{
return a.bi>b.bi;
}
int main()
{
freopen("C:\\Users\\23535\\Desktop\\in.txt","r",stdin); //输入重定向,输入数据将从D盘根目录下的in.txt文件中读取
freopen("C:\\Users\\23535\\Desktop\\out.txt","w",stdout); //输出重定向,输出数据将保存在D盘根目录下的out.txt文件中
int n;
double m;
scanf("%d%lf",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%lf",&nodes[i].cun);
}
for(int i=0;i<n;i++)
{
scanf("%lf",&nodes[i].shou);
nodes[i].bi=nodes[i].shou/nodes[i].cun;
}
sort(nodes,nodes+n,cmp);
double sum=0;
for(int i=0;i<n;i++)
{
if(nodes[i].cun<=m)
{
m-=nodes[i].cun;
sum+=nodes[i].shou;
}
else {
sum+=nodes[i].bi*m;
break;
}
}
printf("%.2f\n",sum);
fclose(stdin);//关闭重定向输入
fclose(stdout);//关闭重定向输出
return 0;
}