比赛 NOIP水题争霸赛 评测结果 AAAAAAAAAW
题目名称 博士的密码 最终得分 90
用户昵称 lajioj 运行时间 0.109 s
代码语言 C++ 内存使用 0.22 MiB
提交时间 2018-02-11 20:46:05
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 50;
typedef long long ll;

ll a[MAXN],s1[MAXN],s2[MAXN],n,key,ans;
map<ll,int> hash;
inline void dfs(int x,int sum,int flag){
    if(!flag&&x>n/2){
        hash[sum]++;
        return;
    }
    if(flag&&x>n){
        ans+=hash[key-sum];
        return;
    }
    dfs(x+1,sum+a[x],flag);
    dfs(x+1,sum,flag);
}

inline void file(){
	freopen("password1.in","r",stdin);
	freopen("password1.out","w",stdout);
}

int main(){
	file();
    scanf("%lld%lld",&n,&key);
    for(int i=1;i<=n;i++)
    scanf("%lld",&a[i]);
    dfs(1,0,0);
    dfs(n/2+1,0,1);
    printf("%d",ans);
    return 0;
}