HDU 1009FatMouse' Trade

来源:互联网 发布:淘宝大数据 实体店 编辑:程序博客网 时间:2024/06/05 20:33
FatMouse' Trade
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 1009

Description

康康准备了 M 斤的食物, 准备跟舍长交换哲学之宝 ♂
舍长有 N 个房间. 第 i 个房间有 J[i] 的 ♂ 需要 F[i] 斤的食物. 康康可以不换完整个房间的♂ ,
他可以用 F[i]* a% 的食物 换 J[i]* a% 的 ♂ 
现在给你一个实数 M 问你康康最多能获得多少的 ♂

Input

The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case is followed by two -1's. All integers are not greater than 1000.

Output

For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans thatFatMouse can obtain.

Sample Input

5 37 24 35 220 325 1824 1515 10-1 -1 
 

Sample Output

13.33331.500 
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{double J,F,K;}a[1010];bool cmp(node x,node y){return x.K>y.K;}int main(){int m,n;while(scanf("%d%d",&m,&n)!=EOF&&(n!=-1&&m!=-1)){for(int i=0;i<n;i++){scanf("%lf%lf",&a[i].J,&a[i].F);a[i].K=a[i].J/a[i].F;}sort(a,a+n,cmp);double sum=0;int k=-1;for(int i=0;i<n;i++){if(m-a[i].F>0){m-=a[i].F;sum+=a[i].J;}else{k=i;break;}}if(k!=-1){sum+=(m/a[k].F)*a[k].J;}printf("%.3lf\n",sum);}}

0 0
原创粉丝点击