Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
【入门】购买贺年卡【***】 - NOTEBOOK
【入门】购买贺年卡【***】
C++
Posted on 2023-08-11
摘要 : 学会使用结构体struct,以使用sort定义排序数组。
❱ 描述:

新年快到了,小蓝 打算给他的好朋友们发贺年卡,而且他已经选好了自己要购买的贺卡的样式。俗话说得好,货比三家,小蓝 来到商店,看了各个商铺这种贺卡的价钱。不仅如此,小蓝 还记住了每个商铺的存货量。已知 小蓝 打算购买 m 张贺卡,问她最少花多少钱。

❱ 输入描述:

第一行两个整数m和n。其中m表示要购买的贺卡的数量,n 表示商铺的个数。
以下n行,每行两个整数,分别表示该商铺这种贺卡的单价和存货量。

❱ 输出描述:

仅一个数,表示 小蓝 花的最少钱数。

❱ 用例输入:

10 4
4 3
6 2
8 10
3 6


❱ 用例输出:

36



#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;

struct store{ // 定义结构体 store
int price;
int stock;
};
store a[10005]; // 用结构体 定义 数组

bool cmp(store a,store b){
return a.price < b.price; // 根据价格从小到大排序
}

int main(){
int p,n;
cin>>p>>n; // 购买数量,店铺数量
int notyet = p; // 还有多少没买。
int sum = 0; // 金额总数
for(int i=1;i<=n;i++){
cin>>a[i].price>>a[i].stock; // 赋值数据
}

sort(a+1,a+1+n,cmp); // 自定义排序

// 打印测试数据
// for(int i=1;i<=n;i++){
// cout<< a[i].price<<' '<<a[i].stock<<endl;
// }

for(int i=1;i<=n;i++){
//cout <<i<<endl; // 打印测试数据
//cout <<notyet<<' '<<a[i].stock<<endl; // 打印测试数据
if(notyet>=a[i].stock){ // 如果未买的数量大于店铺库存
sum += a[i].stock*a[i].price; // 则使用店铺库存来计算金额。
notyet -= a[i].stock; // 未买总数减掉 本次库存
}else{
sum += notyet*a[i].price; // 如果未买数量小于店铺库存,则使用未买数量来计算金额
break; // 最后一次。直接跳出
}
}
cout << sum;
}