andre_joy

导航

USACO milk

题意:计算从农夫手中购买需要的牛奶的最小价格。

mark:简单排序即可。

代码:

/*
ID: andre_j2
LANG: C
TASK: milk
*/
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    int p,a;
}farmer;

int cmp(const void *c, const void *b)
{
    farmer *f1 = (farmer *)c, *f2 = (farmer *)b;
    if(f1->p != f2->p) return f1->p - f2->p;
    return f2->a - f1->a;
}

main () {
    freopen("milk.in", "r", stdin);
    freopen("milk.out", "w", stdout);
    farmer f[5010];
    int n,m,price;
    int i,j,k;
    scanf("%d%d", &n, &m);
    for(i = 0; i < m; i++)
        scanf("%d%d", &f[i].p, &f[i].a);
    qsort(f, m, sizeof(f[0]), cmp);
    price = 0;
    for(i = j = 0; j+f[i].a < n; i++)
    {
        j += f[i].a;
        price += f[i].a*f[i].p;
    }
    price += f[i].p*(n-j);
    printf("%d\n", price);
    exit (0);
}

posted on 2012-07-10 21:51  andre_joy  阅读(93)  评论(0编辑  收藏  举报