FatMouse' Trade

FatMouse' Trade

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 5   Accepted Submission(s) : 3

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.
The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now he is 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 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 that FatMouse can obtain.

Sample Input

5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1

Sample Output

13.333
31.500
#include<iostream>
#include<algorithm>
using namespace std;
struct lmx{
   int j;
   int f;
};
bool gcd(lmx s1,lmx s2)
{
 return (double)(s1.j)/s1.f>(double)(s2.j)/s2.f;
}
lmx lm[1005];
int main()
{
 cout.precision(3);
 int m,n,i,x,t;
 double s,sum;
 while(cin>>m>>n)
 {
  x=0;
  s=0;
  sum=0;
  t=0;
  if(m==-1&&n==-1)  break;
        for(i=0;i<n;i++)  {cin>>lm[i].j>>lm[i].f;x+=lm[i].f;s+=lm[i].j;}
        sort(lm,lm+n,gcd);
        if(x<m)  cout<<fixed<<s<<endl;
  else
  {
   for(i=0;i<n;i++)
   {
                t+=lm[i].f;
    sum+=lm[i].j;
    if(t>=m)
    {
     sum=sum-lm[i].j+(m-t+lm[i].f)*(lm[i].j*1.0/lm[i].f);
     break;
    }
   }
   cout<<fixed<<sum<<endl;
  }
 }
 return 0;
}
posted @ 2012-11-21 22:42  forevermemory  阅读(96)  评论(0编辑  收藏  举报