比赛 |
NOIP水题争霸赛 |
评测结果 |
RRRRRRRRRR |
题目名称 |
博士的密码 |
最终得分 |
0 |
用户昵称 |
313 |
运行时间 |
0.047 s |
代码语言 |
C++ |
内存使用 |
0.13 MiB |
提交时间 |
2018-02-11 21:43:00 |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<map>
#define M 45
#define ll long long
using namespace std;
ll a[M],s1[M],s2[M],n,key,ans;
map<ll,int> hash;
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);
}
int main()
{
freopen("password1.in","r",stdin);
freopen("password1.out","w",stdout);
cin>>n>>key;
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
dfs(1,0,0);dfs(n/2+1,0,1);
cout<<ans;
return 0;
}