代码如下,有一个测试点RE,其他全部AC
#include<bits/stdc++.h>
using namespace std;
double d,e,f,g,t,ans1=0;
double ans2=0,c;
int a,n,b=1;
struct jinbi
{
double m,v;
double v1;
}A1[110];
bool cmp(jinbi a,jinbi b)
{
return a.v1>b.v1;
}
int main()
{
cin>>n>>t;
for(a=1;a<=n;a++)
{
cin>>A1[a].m>>A1[a].v;
if(A1[a].m!=0)
A1[a].v1=A1[a].v/A1[a].m;
else
{
A1[a].v1=0;
}
}
sort(A1+1,A1+n+1,cmp);
while(ans1<t)
{
if(A1[b].m<=t-ans1)
{
ans1+=A1[b].m;
ans2+=A1[b].v;
b++;
}
else
{
c=(t-ans1)*A1[b].v1;
ans1=t;
ans2+=c;
}
}
cout<<setprecision(2)<<fixed<<ans2;
return 0;
}