http://www.luogu.org/problem/show?pid=1208
贪心地优先选择最便宜的牛奶
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int p[5005], a[5005];
void qs(int l, int r) {
int i=l, j=r;
int x=p[(l+r)/2], y;
do {
while (p[i]<x) i++;
while (p[j]>x) j--;
if (i<=j) {
y = p[i], p[i] = p[j], p[j] = y;
y = a[i], a[i] = a[j], a[j] = y;
i++, j--;
}
}while (i<=j);
if (l<j) qs(l,j);
if (i<r) qs(i,r);
}
int main()
{
int n,m;
scanf("%d%d", &n ,&m);
for (int i=1;i<=m;i++)
{
scanf("%d%d", &p[i], &a[i]);
}
qs(1,m);
int tot = 0;
int money = 0;
for (int i=1;i<=m;i++)
{
if (tot+a[i]>=n)
{
int sy = n - tot;
money += sy * p[i];
break;
}
else
{
tot += a[i];
money += a[i] * p[i];
}
}
printf("%d\n", money);
return 0;
}