试了几题,总有那么一点错误不能通过,又找不出来,一直调下去都不知对还是错
今晚最后一题,直接Accepted,满足一下
http://acm.hdu.edu.cn/showproblem.php?pid=1009
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
typedef struct room
{
double a,b;
double rate;
}room;
room a[MAX];
int cmp(const void *a,const void *b)
{
return (*(room *)a).rate>(*(room *)b).rate?1:-1;
}
int main(void)
{
int i,m,n;
double sum;
//freopen("in.txt","r",stdin);
while(scanf("%d%d",&m,&n)&&(m!=-1))
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&a[i].a,&a[i].b);
a[i].rate=a[i].b/a[i].a;
}
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i<n;i++)
{
if(m>a[i].b)
{
m-=a[i].b;
sum+=a[i].a;
}
else
{
sum+=m*(a[i].a/a[i].b);
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}