#include <iostream>
#include <algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;
struct Node
{
double F,J;
};
bool cpm(Node x,Node y)
{
return (x.J/x.F)>(y.J/y.F);
}
int main()
{
int M,N,i;
double R;
struct Node room[1001];
while(scanf("%d %d",&M,&N)!=EOF)
{
R=0;
if(M==-1&&N==-1)break;
for(i=1;i<N+1;i++)
{
scanf("%lf %lf",&room[i].J,&room[i].F);
}
sort(room+1,room+N+1,cpm);
for(i=1;i<N+1;i++)
{
if(M-room[i].F>=0){M=M-room[i].F;R+=room[i].J;}
else {R+=room[i].J/room[i].F*M;break;}
}
printf("%.3lf\n",(int)(R*1000+0.5)/1000.0);//(巨坑)四舍五入问题
}
return 0;
}
总结:
1.结构体数组的创建(结构体内只能有成员变量)
2.sort函数对结构体数组排序
3.(巨坑)四舍五入问题