import java.io.*; import java.util.*; final class P implements Comparable
{ double a; long b; P(double x,long y){a=x;b=y;} @Override public int compareTo(P o){ return Double.compare(a,o.a); } } class Main { long ans=0; int p; long[]v,w,vAcc,wAcc; /*解説を参考にした。*/ final long relaxed(long rem,int a){ long ans=0; for(int i=a;i
=w[i]){
rem-=w[i];
ans+=v[i];
}else{
ans+=v[i]*rem/w[i];
rem=0;
break;
}
}
return ans;
}
final void dfs(long rem,int a,long sum){
ans=Math.max(ans,sum);
if(a>=p)
return;
if(wAcc[p]-wAcc[a]<=rem){
ans=Math.max(ans,vAcc[p]-vAcc[a]+sum);
return;
}
long expect=relaxed(rem,a);
if(sum+expect ww)continue;
p++;
}
if (p==0){
out.println(0);
out.close();
return;
}
P[]rat=new P[p];
for(int i=0;i