#include<bits/stdc++.h>
using namespace std;
struct coin{
double m;
double v;
double d;
}coins[110]={0};
bool cmp(coin x,coin y)
{
return (x.v*y.m)>(y.v*x.m);
}
int main()
{
double N,T,weight=0.0;
int leng=0;
double ans=0.0;
cin>>N>>T;
for(int i=1;i<=N;i++)
{
cin>>coins[i].m>>coins[i].v;
leng++;
}
sort(coins+1,coins+leng+1,cmp);
for(int i=1;i<=leng;i++)
{
if(T<=weight)
{
break;
}
if(coins[i].m+weight<=T)
{
ans+=coins[i].v;
weight+=coins[i].m;
}
if(coins[i].m+weight>T)
{
ans+=1.0*(T-weight)*coins[i].v*1.0/(coins[i].m*1.0);
break;
}
}
printf("%.2lf",ans);
return 0;
}
求调,解决必关,谢谢大佬们