比赛 |
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;
}