比赛 2026.9.12 评测结果 AAAATTTTTT
题目名称 分饼干 最终得分 40
用户昵称 杨蕙宇 运行时间 7.365 s
代码语言 C++ 内存使用 3.51 MiB
提交时间 2026-09-12 11:22:06
显示代码纯文本
/*
n个元素,权值为a[],从中选出两个集合,使得集合中元素的和相等
求出元素和最大值 
*/ 

#include<bits/stdc++.h>
using namespace std;
const int N=60;
const int M=5e5+10;
int n,s[N];
int mk[M];
int ans;
void dfs(int x,int a,int b,int c){
    if(x>n){
        if(a==b){
            ans=max(ans,a);
        }
        if(b==c){
            ans=max(ans,b);
        }
        if(a==c){
            ans=max(ans,c);
        }
        return;
    }
    for(int i=0;i<3;i++){
        if(i==0)dfs(x+1,a+s[x],b,c);
        if(i==1)dfs(x+1,a,b+s[x],c);
        if(i==2)dfs(x+1,a,b,c+s[x]);
    }
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    freopen("cookie.in","r",stdin);
    freopen("cookie.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)cin>>s[i];
    dfs(1,0,0,0);
    cout<<ans;
    return 0;
}