#include<bits/stdc++.h>
using namespace std;
int main()
{
float a,b,c[101],d[101],e[101]={0},f=0;//a为堆数,b为容量,c为质量,d为价值,e为比值,f为总值
cin>>a>>b;
for(int i=1;i<=a;i++)
{
cin>>c[i]>>d[i];
e[i]=d[i]/c[i];
if(e[i]>e[i-1])
{
swap(e[i],e[i-1]);
swap(c[i],c[i-1]);
swap(d[i],d[i-1]);
}
}
for(int i=0;i<=a;i++)
{
if(b>=c[i]&&b!=0)
{
b-=c[i];
f+=d[i];
continue;
}
if(b<c[i])
{
f+=b*e[i];
break;
}
}
printf("%.2lf",f);
return 0;
}
只有第一个点是对的,后面四个全部WA。