1 solutions

  • 0
    @ 2025-11-5 15:06:19

    C++ :

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<vector>
    #include<math.h>
    
    using namespace std;
    
    int n;
    int a[1010];
    bool f[10100];
    
    int solve(){
    	memset(f,false,sizeof(f));
    	f[0] = true;
    	int sum = 0;
    	for(int i = 1;i <= n;++i)
    		sum += a[i];
    	for(int i = 1;i <= n;++i)
    		for(int j = a[i];j <= sum;++j)
    			f[j] |= f[j - a[i]];
    	int ans = 0x3f3f3f3f;
    	for(int i = 0;i <= sum;++i){
    		if(!f[i])
    			continue;
    		int t = max(sum - i,i);
    		ans = min(ans,t);
    	}
    	return ans;
    }
    
    int main(){
    	int T;
    	scanf("%d",&T);
    	for(int caseT = 1;caseT <= T;++caseT){
    		scanf("%d",&n);
    		for(int i = 1;i <= n;++i)
    			scanf("%d",&a[i]);
    		solve();
    		printf("Case %d: %d\n",caseT,solve());
    	}
    	return 0;
    }
    
    
    • 1

    Information

    ID
    16400
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By