求助,50分!!悬关!
查看原帖
求助,50分!!悬关!
816792
coritom楼主2024/5/5 20:58
#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn = 100005;
int n, a[maxn], dp[maxn], ans[maxn], mini = 1e18;
signed main(){
	ios_base::sync_with_stdio(false);
	cout.tie(0), cin.tie(0);
	cin >> n;
	for(int T = 1; T <= n; T++){
		memset(dp, 0, sizeof dp);
		memset(a, 0, sizeof a);
		int t = 0, sum = 0;
		while(cin >> a[++t]){
			if(a[t] == -1) break;
			sum += a[t];
		}
		dp[0] = 1;
		mini = min(mini, sum);
		for(int i = 1; i <= t; i++){
			for(int j = mini; j >= a[i]; j--){
				if(dp[j - a[i]] && !dp[j]){
					dp[j] = 1;
					ans[j]++;
				}
			}
		}
	}
	for(int i = mini; i >= 0; i--){
		if(ans[i] == n){
			cout << i;
			return 0;
		}
	}
	cout << 0;
	return 0;
}

2024/5/5 20:58
加载中...