题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1009
//C++代码
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
struct Trade{
int J,F;
double C;
bool operator <(const Trade &t) const{
return C>t.C;
}
}T[1005];
int main(){
int m,n,i;
while(cin>>m>>n){
if(m==-1 && n==-1) break;
for(i=0;i<n;i++){
cin>>T[i].J>>T[i].F;
T[i].C=(T[i].J+0.0)/T[i].F;
}
sort(T,T+n);
double max=0;
for(i=0;i<n && m>0;i++){
if(m>=T[i].F){
max+=T[i].J;
m-=T[i].F;
}
else{
max+=(m*T[i].J+0.0)/T[i].F;
m=0;
}
}
cout<<fixed<<setprecision(3)<<max<<endl;
}
return 0;
}