usaco Mixing Milk

简单贪心,一个快排就够了。

/*
ID: like_091
PROG: milk
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
const int MAX = 5005;
struct Node{
	int p, a;
}node[MAX];
int cmp(const void *a, const void *b)
{
	struct Node *c = (Node *)a;
	struct Node *d = (Node *)b;
	return c->p - d->p;
}
int main(void)
{
	ifstream cin("milk.in");
	ofstream cout("milk.out");
	int n, m, sum;
	while (cin>>n>>m)
	{
		sum = 0;
		for (int i = 0; i < m; i++)
			cin>>node[i].p>>node[i].a;
		qsort(node, m, sizeof(node[0]), cmp);
		for (int i = 0; i < m; i++)
		{
			if (n >= node[i].a)
			{
				sum += node[i].p * node[i].a;
				n -= node[i].a;
			}else {
				sum += n * node[i].p;
				break;
			}
		}
		cout<<sum<<endl;
	}
	return 0;
}
posted @ 2011-02-19 23:56  like@neu  阅读(169)  评论(0编辑  收藏  举报