简单贪心
#include<bits/stdc++.h>
using namespace std;
struct warehouse{
double bean;
double food;
double r;
}; warehouse a[1010];
bool cmp(warehouse a,warehouse b){
return a.r<b.r;
}
int m,n;
double sum;
int main(){
while(cin>>m>>n&&n!=-1&&m!=-1){
sum=0;
memset(a,0,sizeof(a));
for(int i=0;i<n;++i){
cin>>a[i].bean>>a[i].food;
a[i].r=a[i].food*1.0/a[i].bean;
}
sort(a,a+n,cmp);
for(int i=0;i<n;++i){
if(m>a[i].food){
m-=a[i].food;
sum+=a[i].bean;
}
else {
sum+=(m*1.0/a[i].food)*a[i].bean;
m=0;
break;
}
}
printf("%.3f\n",sum);
}
}