#include<algorithm>
#include<cstdio>
using namespace std;
int main(){
int m,n;
while(cin>>m>>n){
int j[1100]={0},f[1100]={0};
double sum=0;
if(m!=-1 || n!=-1){
for(int i = 0;i < n; i++){
cin>>j[i]>>f[i];
}
//对效率进行排序
for(int i = 0;i <= n; i++){
for(int k = i+1;k <= n-1; k++){
if(1.0*j[k]/f[k]>1.0*j[i]/f[i])
{
j[k]+=j[i];
j[i]=j[k]-j[i];
j[k]-=j[i];
f[k]+=f[i];
f[i]=f[k]-f[i];
f[k]-=f[i];
}
}
}
int i=0;
while(m>f[i]){
m-=f[i];
sum+=j[i];
i++;
}
sum+=1.0*m/f[i]*j[i];
printf("%.3lf\n",sum);
} else break;
}
return 0;
}
胖鼠准备了M磅猫粮,准备和看守仓库的猫交易,仓库里有他最喜欢的食物——爪哇豆。
这个仓库有N个房间。第i个房间里有J[i]磅的爪哇豆,需要F[i]磅的猫粮。胖鼠不必用房间里所有的爪哇豆来交换,相反,如果他支付F[i]*a%磅的猫粮,他可能会得到J[i]*a%磅的爪哇豆。这是一个实数。现在他给你布置了一个家庭作业:告诉他可以获得的JavaBeans的最大数量。
输入
输入由多个测试用例组成。每个测试用例从一行开始,该行包含两个非负整数M和N。然后是N行,每个行分别包含两个非负整数J[i]和F[i]。最后一个测试用例后面是两个-1。所有整数都不大于1000。
输出
对于每个测试用例,在一行中打印一个精确到小数点后3位的实数,这是FatMouse可以获得的最大JavaBeans数量。
Sample Input
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Sample Output
13.333
31.500