#include<bits/stdc++.h>
using namespace std;
struct f{
double m,v;
}a[105];
int n,t;
bool cmp(f x,f y){
return x.v/x.m>y.v/y.m;
}
double jz(int t,int cnt,double mv){
if(cnt>n||t==0)return mv;
while(t>=a[cnt].m){
t-=a[cnt].m;
mv+=a[cnt].v;
}
return max(jz(t,cnt+1,mv),mv+a[cnt].v*(t/a[cnt].m));
}
int main(){
cin>>n>>t;
for(int i=1;i<=n;i++){
cin>>a[i].m>>a[i].v;
}
sort(a+1,a+n+1,cmp);
printf("%.2lf",jz(t,1,0.0));
return 0;
}
输入
4 50
10 60
20 100
30 120
15 45
样例输出
240.00
我的输出
300.00
都选第一个好像真的最优......