解法:根据farmer所给单价进行排序,每次选择单价最低的购买全部,直到购买总数量达到要求。
最后一个只购买所需量即(m-ca)。
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
int n=0,m=0;
int ca=0,money=0;
scanf("%d %d",&m,&n);
vector<int>p;
vector<int>a;
int tp,ta;
int i,j;
for(i=0;i<n;i++){
scanf("%d %d",&tp,&ta);
p.push_back(tp);
a.push_back(ta);
}
for(i=0;i<n;i++){
for(j=0;j<n-i-1;j++){
if(p[j]>p[j+1]){
tp=p[j];
p[j]=p[j+1];
p[j+1]=tp;
ta=a[j];
a[j]=a[j+1];
a[j+1]=ta;
}
}
}
for(i=0;i<n;i++){
if(ca+a[i]<=m){
ca+=a[i];
money+=a[i]*p[i];
}
else
{
break;
}
}
if(ca<m){
money=money+(p[i]*(m-ca));
}
printf("%d",money);
return 0;
}