5. 购买贺卡
题目ID:20261必做题100分
最新提交:
Wrong Answer
70 分
历史最高:
Wrong Answer
70 分
时间限制: 1000ms
空间限制: 262144kB
题目描述
新年快到了,楠枫打算给他的好朋友们发贺年卡,而且他已经选好了自己要购买的贺卡的样式。俗话说得好,货比三家,楠枫来到商店,看了各个商铺这种贺卡的价钱。不仅如此,楠枫还记住了每个商铺的存货量。已知楠枫打算购买 m 张贺卡,问他最少花多少钱。
输入格式
第一行两个整数 m 和 n。其中 m 表示要购买的贺卡的数量,n 表示商铺的个数。
以下 n 行,每行两个整数,分别表示该商铺这种贺卡的单价和存货量。
输出格式
仅一个数,表示楠枫花的最少钱数。
样例
Input 1
10 4
4 3
6 2
8 10
3 6
Output 1
36
数据范围
0<m、n≤10000<m、n≤1000,每个商铺贺卡单价在 1 ~100 之间,数量在 1 ~1000 之间,输入保证商铺的总存货量不少于 m
没有发现错在哪,请求帮助
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
#include<climits>
#include<cstring>
#include<string>
#include<algorithm>
#include<functional>
using namespace std;
int main(){
int m,n,total=0,price[105],supply[1005];//number of cards, number of stores
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>price[i]>>supply[i];
}
for(int i=2;i<=n;i++){
int j=i;
while(j!=1){
if(price[j]<price[j-1]){
swap(price[j],price[j-1]);
swap(supply[j],supply[j-1]);
j--;
}
else{
break;
}
}
}
int k=1;
while(m>=0){
if(supply[k]<=m){
total=total+supply[k]*price[k];
}
else{
total=total+m*price[k];
}
m=m-supply[k];
k++;
}
cout<<total;
return 0;
}