比赛 |
国庆欢乐赛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;
}