http://train.usaco.org/usacoprob2?a=9CYvwksB366&S=milk
题目大意:
MMM公司需要N单位牛奶,每个农场提供ai单位牛奶,单价为pi。
求MMM公司购买所需牛奶的最少花费。(所有农村提柜的牛奶总和大于等于公司的需求)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct famer {
int price;
int available;
} f[5000];
bool operator < (const famer & a, const famer & b)
{
return a.price < b.price;
}
int main()
{
ifstream fin("milk.in");
ofstream fout("milk.out");
int n, m, ans, t;
while(fin >> n >> m)
{
t = ans = 0;
for(int i = 0; i < m; i++) fin >> f[i].price >> f[i].available;
sort(f, f + m);
for(int i = 0; i < m && t < n; i++)
{
if(f[i].available <= n - t) ans = ans + f[i].price*f[i].available;
else ans = ans + f[i].price*(n - t);
t += f[i].available;
}
fout << ans << endl;
}
return 0;
}