Description
Fatmouse prepared M pounds of cat food, ready-to-trade with the cats guarding the warehouse containing he favorite food, JavaBean. The warehouse has N rooms. The i-th contains j[i] pounds of JavaBeans and requires f[i] pounds of cat food. Fatmouse does not has the to trade for all the JavaBeans in the the the same, instead, he may get j[i]* a% of pounds JavaBeans if he Pays f[i]* a% pounds of cat food. Here A is a real number. Now he's assigning this homework to you:tell him the maximum amount of JavaBeans he can obtain.
Input
The input consists of multiple test cases. Each test case is begins with a line containing the non-negative integers M and N. Then N lines follow, each contains, non-negative integers j[i] and f[i] respectively. The last test case was followed by Two-1 ' s. All integers is 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 J Avabeans that Fatmouse can obtain.
Sample Input
5 37 24 35 220 325 1824 1515 10-1-1
Sample Output
13.33331.500
#include <iostream>#include<cstdio>#include<algorithm>using namespacestd;structlaoshu{intJ; intF; Doubles;};BOOLCMP (Laoshu Stud1,laoshu stud2) {returnStud1.s>Stud2.s;}intMain () {#ifdef cdzsc_offline freopen ("In.txt","R", stdin);#endif intI,m,n; Doublesum; Laoshu stud[1010]; while(SCANF ("%d%d", &m,&n) &&m!=-1&&n!=-1) {sum=0; for(i=0; i<n; i++) {scanf ("%d%d",&stud[i].j,&stud[i].f); Stud[i].s=1.0*stud[i].j/stud[i].f; } sort (Stud,stud+n,cmp); for(i=0; i<n; i++) { if(m>=stud[i].f) {Sum+=STUD[I].J; M-=stud[i].f; } Else{sum+=stud[i].s*m; Break; }} printf ("%.3lf\n", sum); } return 0;}
Cdzsc_2015 new Winter Holiday (1)--Basic C