描述
马上又到了一年一度的新年联欢,小明作为班里的班长,负责组织策划新年联欢活动,他决定采购一些奖品奖励积极参与每个项目活动的同学。
为了激励更多的人参与活动,需要采购的奖品数目越多越好。班费中可支出的钱数为m元,现给定商店中n种可作为奖品的物品的价格和库存数量,怎样才能购得最多的物品数?
输入描述
输入一共n+1行:
第一行包含两个正整数m (1<m≤10000)和n(1<n≤100),表示可支出的费用为m元和可供购买的物品有n种。
接下来的n行,每行包含两个数(有一个空格分隔),分别表示一种物品的单价a和库存数量b。a和b均不会超过1000。
输出描述
一个整数,表示最多可以购买的物品数量。
用例输入 1
500 6 100 3 20 15 50 10 35 5 5 6 60 2
用例输出 1
25
代码
#include<algorithm>
#include<iostream>
using namespace std;
struct node{
int a;
int b;
}c[101];
bool cmp(node x,node y){
return x.a < y.a;
}
int main(){
int m,n,s=0;
int i,j;
int sum = 0;
cin>>m>>n;
for(i = 0; i < n; i++){
cin>>c[i].a>>c[i].b;
}
sort(c,c+n,cmp);
for(i = 0; i < n; i++){
for(j = 1; j <= c[i].b; j++){
sum += c[i].a;
if(sum>=m){
break;
}
s++;
}
}
cout<<s;
return 0;
}