比赛 国庆欢乐赛2 评测结果 WAWWWWWWWWWWWWWWWWWW
题目名称 毛一琛 最终得分 5
用户昵称 二乾五 运行时间 4.215 s
代码语言 C++ 内存使用 3.72 MiB
提交时间 2025-10-04 11:37:55
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define foru(a,b,c) for(ll a=b;a<=c;a++)

ll n,a[25],ans;
bool chose[25];

bool ok(){
    vector<ll>check;
    ll sum=0;
    foru(i,1,n){
        if(chose[i]){
            check.push_back(a[i]);
            sum+=a[i];
        }
    }
    if(check.size()<=2)return 0;
    if(sum%2==1)return 0;
    return 1;
}

void dfs(ll u){
    if(u==n+1){
        if(ok())ans++;
    }else{
        chose[u]=1;
        dfs(u+1);
        chose[u]=0;
        dfs(u+1);
    }
}

int main(){
    freopen("subsets.in" ,"r",stdin );
    freopen("subsets.out","w",stdout);
    cin>>n;
    set<ll>st;
    foru(i,1,n){
        cin>>a[i];
        st.insert(a[i]);
    }
//    ll cnt=0;
//    for(auto x:st){
//        a[++cnt]=x;
//    }
//    n=st.size();
    dfs(1);
    cout<<ans;
    return 0;
}