思路分析:
对其价值进行排序,一次进入房间,拿取javabeen,直到自己手上的猫粮用完。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#define MAX 100000
using namespace std;
struct shu
{
double j,f,v;
}s[1000];
int cmp(shu a,shu b)
{
return a.v>b.v;
}
int main()
{
int m,n;
while(~scanf("%d %d",&m,&n)&&(m!=-1||n!=-1))
{
int i;
double jn=0,room=0;
for(i=0;i<n;i++){scanf("%lf %lf",&s[i].j,&s[i].f);s[i].v=s[i].j/s[i].f;}
sort(s,s+n,cmp);
for(i=0;i<n;i++)
{
if(room+s[i].f<m){jn+=s[i].j;room+=s[i].f;}
else {jn+=s[i].v*(m-room);break;}
}
printf("%.3lf\n",jn);
}
}