[hdu–1009](http://acm.hdu.edu.cn/showproblem.php?pid=100
#include<bits/stdc++.h>
using namespace std;
#define maxn 1005
struct Hourse{
int j,f;
};
int m,n;
double jb;
Hourse hourse[maxn];
bool cmp(Hourse a,Hourse b)
{
if((a.j/(double)a.f)>(b.j/(double)b.f))
return true;
else
return false;
}
int main(){
while(scanf("%d%d",&m,&n)!=EOF&&m!=-1&&n!=-1){
jb=0;
memset(hourse,0,sizeof(hourse));
for(int i=0;i<n;i++){
scanf("%d%d",&hourse[i].j,&hourse[i].f);
}
sort(hourse,hourse+n,cmp);
//关键部分
for(int i=0;m!=0;i++){
if(m>=hourse[i].f){
m-=hourse[i].f;
jb+=hourse[i].j;
}
else{
jb+=hourse[i].j*((m/(double)hourse[i].f));
m=0;
}
}
printf("%.3lf\n",jb);
}
return 0;
}