每次找最便宜的milk,
接著確認amount供應是否正常,
反覆此二步驟,直到滿足amount量,
輸出金額。
先做sort好像會比較好一點……
/*
ID: mythnc2
LANG: C
TASK: milk
Mixing Milk
2011/11/14 21:57:02
*/
#include <stdio.h>
#define MAXF 5000
typedef struct provider {
int price;
int amount;
} Provider;
int findmin(Provider *, int);
int checkamount(Provider, int);
int main (void)
{
FILE *fin, *fout;
int amount, farmer, i, sum, min, quan;
Provider milk[MAXF];
fin = fopen("milk.in", "r");
fout = fopen("milk.out", "w");
fscanf(fin, "%d %d", &amount, &farmer);
for (i = 0; i < farmer; i++)
fscanf(fin, "%d %d", &milk[i].price, &milk[i].amount);
for (sum = 0; amount; milk[min].price = 1001) {
min = findmin(milk, farmer);
quan = checkamount(milk[min], amount);
sum += quan * milk[min].price;
amount -= quan;
}
fprintf(fout, "%d\n", sum);
return 0;
}
/* findmin: return the minimum milk.price element */
int findmin(Provider *milk, int n)
{
int i, min;
for (i = 1, min = 0; i < n; i++)
if (milk[i].price < milk[min].price)
min = i;
return min;
}
/* checkamount: return the milk.amount provide
* actually */
int checkamount(Provider milk, int amount)
{
if (milk.amount > amount)
return amount;
return milk.amount;
}
沒有留言:
張貼留言