比赛 国庆欢乐赛2 评测结果 TAAWAAWTTTTTTTTTTTTT
题目名称 毛一琛 最终得分 20
用户昵称 汐汐很希希 运行时间 44.164 s
代码语言 C++ 内存使用 9.04 MiB
提交时间 2025-10-04 11:56:04
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=25;
const int M=1048576;
int n,sum=0;
ll a[N],ans[N],dp[M];
bool pd(int ssum,int s)
{
    int t=ssum/2;
    for(int i=1;i<=s;i++) if(dp[i]==t&&dp[s-i]==t&&(s&i)) return true;
    return false;
}
int main()
{
    freopen("subsets.in","r",stdin);
    freopen("subsets.out","w",stdout);
    
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<pow(2,n);i++){
        int t=i;
        for(int j=1;j<=n,t!=0;j++){
            if(t%2!=0) dp[i]+=a[j];
            t/=2;
        }
    }
    for(int i=1;i<pow(2,n);i++) if(dp[i]%2==0) if(pd(dp[i],i)) sum++;
    cout<<sum<<endl;
    return 0;
}