hdu1009 FatMouse' Trade(贪心)

#include <stdio.h>
#include <iostream>
#include <algorithm>

 

using namespace std;

#define MAXN 100000

struct FNode
{
    int J, F;
};
bool myCmp(const FNode &f1, const FNode &f2)
{
    return (double)f1.J / f1.F > (double)f2.J / f2.F;
}

FNode a[MAXN];

int main()
{
#ifndef ONLINE_JUDGE
    freopen("indata.txt", "r", stdin);
#endif
    int M, N;
    while(scanf("%d %d", &M, &N), M != -1 || N != -1)
    {
        int i;
        for(i = 0; i < N; i++)
        {
            scanf("%d %d", &a[i].J, &a[i].F);
        }
        sort(a, a + N, myCmp);
      //  for(i = 0; i < N; i++) printf("%d %d\n", a[i].J, a[i].F);
        double ans = 0.0;
        for(i = 0; i < N && M >= a[i].F; i++)
        {
            M -= a[i].F;
            ans += a[i].J;
        }
     //   printf("M=%d\n", M);
        if(i < N) ans += (double)M / a[i].F * a[i].J;
        printf("%.3f\n", ans);
    }
    return 0;
}

posted @ 2010-10-19 21:13  菜到不得鸟  阅读(55)  评论(0)    收藏  举报