题目描述
新年快到了,笑笑打算给他的好朋友们发贺年卡,而且他已经选好了自己要购买的贺卡的样式。
俗话说得好,货比三家,笑笑来到商店,看了各个商铺这种贺卡的价钱。不仅如此,笑笑还记住了每个商铺的存货量。已知笑笑打算购买 m 张贺卡,问他最少花多少钱。
输入
第一行两个整数 m 和 n 。其中 m 表示要购买的贺卡的数量,n 表示商铺的个数。
以下 n 行,每行两个整数,分别表示该商铺这种贺卡的单价和存货量。
输出
仅一个数,表示笑笑花的最少钱数。
样例
输入
10 4 4 3 6 2 8 10 3 6
输出
36
说明
数据规模
0<m,n≤1000,每个商铺贺卡单价在 1∼1000 之间,数量在 1∼1000之间,输入保证商铺的总存货量不少于 m 。
#include<bits/stdc++.h>
using namespace std;
struct sp{
int price,count;
}a[1005];
bool cmp(sp x,sp y){
return x.price<y.price;
}
int main(){
int n,m,sum=0;
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>a[i].price>>a[i].count;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(a[i].count>=m){
sum+=m*a[i].price;
m-=m;
break;
}
else{
sum+=a[i].price*a[i].count;
m-=a[i].count;
}
}
cout<<sum;
return 0;
}