struct加贪心,性价比高的先加。
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
double j;
double f;
double x;
}a[1005];
int cmp(node a,node b){
return a.x>b.x;
}
int main(){
int i,n,m;
double sum;
while(~scanf("%d%d",&m,&n)){
sum=0;
if(m==-1&&n==-1)break;
for(i=0;i<n;i++){
scanf("%lf%lf",&a[i].j,&a[i].f);
a[i].x=a[i].j/a[i].f;
}
sort(a,a+n,cmp);
for(i=0;i<n;i++){
if(m-a[i].f>0){
sum+=a[i].j;
m-=a[i].f;
}else{
sum+=a[i].j*(m/a[i].f);
break;
}
}
printf("%.3lf\n",sum);
}
}