为什么0分?样例过了
查看原帖
为什么0分?样例过了
797897
_QyGyQ_楼主2023/8/8 20:18
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;
using ll=long long;
using ull=unsigned long long;
int a[N];
int n,t,ans=-1;
ull q;
vector<int>v;
void dfs(int neng,int i,ull j){
	if(i>n){
		if(j==q){
			ans=max(ans,neng);
		}
		return ;
	}
	if(neng>=a[i]){
		dfs(neng-a[i],i+1,j+1);
		dfs(neng,i+1,j);
	}
	else{
		dfs(neng,i+1,j);
		dfs(neng+a[i],i+1,j+1);
	}
}
int main(){
	cin>>n>>t;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	while(t--){
		v.clear();
		ans=-1;
		cin>>q;
		dfs(0,1,0);
		if(ans==-1) cout<<0<<"\n";
		else cout<<ans<<"\n";
	}
	return 0;
}


2023/8/8 20:18
加载中...