比赛 国庆欢乐赛2 评测结果 TAWWWTTTTTTTTTTTTTTT
题目名称 毛一琛 最终得分 5
用户昵称 梦那边的美好RE 运行时间 49.600 s
代码语言 C++ 内存使用 3.44 MiB
提交时间 2025-10-04 10:03:47
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define int long long 
int n,a[30000],ans[30000],cnt,sum,san[30000];
map<int,int>vis;  
set<int>s[30];
void dfs(int u,int dep){
    if(u==dep+1){
        int res1=0,res2=0;
        for(int i=1;i<=cnt;i++){
            for(int j=1;j<=i;j++){
                res1+=ans[j];
            }
            for(int j=i+1;j<=cnt;j++){
                res2+=ans[j];
            }
            if(res1==res2){
                for(int k=1;k<=cnt;k++){
                    san[k]=ans[k];
                }    
                unique(san+1,san+cnt+1);
                int ll=s[cnt].size(); 
                for(int k=1;k<=cnt;k++){
                    s[cnt].insert(san[k]);
                }  
                if(ll!=s[cnt].size()){
                    sum++;                   
                } 
            }
        }        
        return;
    }    
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            ans[++cnt]=a[i];
            vis[i]=1;
            dfs(u+1,dep);
            vis[i]=0;
            cnt--;            
        }
    } 
}    
signed main(){
    freopen("subsets.in","r",stdin);
    freopen("subsets.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    } 
    for(int i=1;i<=n;i++){
        dfs(1,i);
    }
    
    cout<<sum;
    
    return 0;
}