问题描述
新年快到了,笑笑打算给他的好朋友们发贺年卡,而且他已经选好了自己要购买的贺卡的样式。俗话说得好,货比三家,笑笑来到商店,看了各个商铺这种贺卡的价钱。不仅如此,笑笑还记住了每个商铺的存货量。已知笑笑打算购买 m 张贺卡,问他最少花多少钱。
输入
第一行两个整数 m 和 n 。其中 m 表示要购买的贺卡的数量,n 表示商铺的个数。
以下 n 行,每行两个整数,分别表示该商铺这种贺卡的单价和存货量。
输出
仅一个数,表示笑笑花的最少钱数。
输入
10 4
4 3
6 2
8 10
3 6
输出
36
#include<bits/stdc++.h>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int m,n,a[1010],b[1010],s=0;
cin>>m>>n;
for(int i=0;i<n;i++){
cin>>a[i]>>b[i];
}
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
swap(b[j],b[j+1]);
}
}
}
for(int i=0;i<n;i++){
while(b[i]&&0!=m){
b[i]--;
m--;
s+=a[i];
}
if(0==m) break;
}
cout<<s;
return 0;
}
制作不易,能点个赞吗,感谢!!