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