糖果可以拆箱。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Treat{
int cost;//价值
int m;//质量
double x;
};//糖果结构体
Treat t[110];
bool cmp( Treat t1, Treat t2){
return t1.x>t2.x;
}
int main(){
int n,w;
scanf("%d %d",&n,&w);
for(int i=0;i<n;i++)
{
scanf("%d %d",&t[i].cost,&t[i].m);
t[i].x=(double)t[i].cost/(double)t[i].m;
}
sort(t,t+n,cmp);
double sumc=0,sumw=0;//总价值、总重量
int i=0;
while(sumw<w&&i<n)
{
sumc+=t[i].cost;
sumw+=t[i].m;
i++;
}
if(sumw>=w)//当麋鹿承重小于当前糖果的重量。防止出现以下情况:一箱糖果 、承重20 糖果价值300 重量300
{
double temp= sumw-w;
sumw-=temp;
sumc-=temp*t[i-1].x;
}
printf("%.1lf\n",sumc);
return 0;
}