爆搜出奇迹

wangruichen 2023-07-28 19:54:11 11 返回题目

#include<ios>
using namespace std;
int ans=0,v[27],p[27],Mx,n;
void dfs(int dep,int num,int sum){
	if(dep==n+1){
		ans=max(ans,sum);
		return;
	}
	if(num+v[dep]<=Mx)dfs(dep+1,num+v[dep],sum+v[dep]*p[dep]);
	dfs(dep+1,num,sum);
}
main(){
	scanf("%d%d",&Mx,&n);
	for(int i=1;i<=n;++i)scanf("%d%d",v+i,p+i);
	dfs(1,0,0);
	printf("%d",ans);
}
{{ vote && vote.total.up }}