题目:
代码:
#include<bits/stdc++.h>
using namespace std;
#define M 100005
struct gold
{
double w;
double v;
double p;
}a[M];
bool cmp(gold g1,gold g2)
{
return g1.p>g2.p;
}
int main()
{
int N,T;
cin>>N>>T;
for(int i=1;i<=N;i++)
{
cin>>a[i].w>>a[i].v;
a[i].p=a[i].v/a[i].w;
}
sort(a+1,a+N+1,cmp);
double sum_w=0,sum_v=0;
for(int i=1;i<=N;i++)
{
if(sum_w+a[i].w<T)
{
sum_w+=a[i].w;
sum_v+=a[i].v;
}
else
{
sum_v+=(T-sum_w)*a[i].p;
break;
}
}
printf("%.2lf",sum_v);
}