就是一帮人需要N单位牛奶,有M个农民,每个人有Ai单位牛奶,每单位牛奶卖Pi块钱。问最少的钱?
就是结构体排序一下就行了。
结构体排序就是(首先得知道结构体,见C语言书)对结构体数组的所有元素按照某一个(或多个)关键值排序。
这道题我们就是按价格从小到大排。
<algorithm>里面有专门的比较函数规范和排序函数sort。
#include <stdio.h>
#include <algorithm>
using namespace std;
struct node {
int p , a;
}c[5005];
int n , m;
bool cmp(node a, node b)
{
return a.p < b.p;
}
int main(void)
{
while(scanf("%d%d" , &n,&m) == 2)
{
int i;
for(i=0;i<m;i++)
scanf("%d%d" , &c[i].p, &c[i].a);
sort(c , c+m , cmp);
long long ans = 0;
for(i=0;i<m;i++)
{
int t = min(n , c[i].a);
n -= t;
ans += t * c[i].p;
if(n == 0) break;
}
printf("%lld\n" , ans);
}
return 0;
}