金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 ? N 元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的 ? N 元。于是,他把每件物品规定了一个重要度,分为 5 5 等:用整数 1 − 5 1−5 表示,第 5 5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过 ? N 元(可以等于 ? N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。
样例:1000 5 800 2 400 5 300 5 400 3 200 2
输出:3900
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[30],b[30],c[30],k;
int main ()
{
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
k=a[i]*b[i];
c[i]=k;
}
for(int i=1;i<m;i++){
for(int j=i+1;j<=m;j++){
if(c[i]<c[j]){swap(c[i],c[j]);swap(a[i],a[j]);}
}
}
k=0;
for(int i=1;i<=m;i++){
if(n>a[i]){n-=a[i];k+=c[i];}
}
cout<<k;
return 0;
}