好久没刷题了。。这周加班真心累啊,完全木有时间。。以后刷题速度肯定会降下来了,随着题目难度的增加,水题越来越少了,还要分配一些时间到UNIX系统的学习上,但是不能停止,慢慢地前进吧
#include<stdio.h>
#include<stdlib.h>
struct RoomFood
{
int javeBean;
int catFood;
double ratio;
};
static int cmp(const void *p1, const void *p2)
{
struct RoomFood *r1 = (struct RoomFood*) p1;
struct RoomFood *r2 = (struct RoomFood*) p2;
if (r1->ratio > r2->ratio)
return -1;
else if (r2->ratio > r1->ratio)
return 1;
else
return 0;
}
int main()
{
int m, n;
while (scanf("%d %d", &m, &n), m != -1 && n != -1)
{
struct RoomFood *array = malloc(n * sizeof(struct RoomFood));
int i;
for (i = 0; i < n; i++)
{
scanf("%d %d", &(array[i].javeBean), &(array[i].catFood));
array[i].ratio = array[i].javeBean / (double) array[i].catFood;
}
qsort(array, n, sizeof(struct RoomFood), cmp);
double res = 0;
for (i = 0; i < n; i++)
{
if (m > 0)
{
res += m >= array[i].catFood ?
array[i].javeBean : array[i].ratio * m;
m -= array[i].catFood;
}
else
break;
}
printf("%.3lf\n", res);
free(array);
}
return 0;
}