比赛 NOIP水题争霸赛 评测结果 AAAAWEEEEE
题目名称 博士的密码 最终得分 40
用户昵称 2333 运行时间 0.384 s
代码语言 C++ 内存使用 0.20 MiB
提交时间 2018-02-11 21:20:51
显示代码纯文本
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int tot1=0,tot2=0;
long long key;
int a[4500];
long long sum1[500];
long long sum2[500];
long long ans=0;
void run(int i,int j,long long S,long long *ss,int &tot)
{
	if(i==j){
		ss[++tot]=S;
		return ;
	}
	run(i+1,j,S+a[i+1],ss,tot);
	run(i+1,j,S,ss,tot);
}
int main(){
freopen("password1.in","r",stdin);
freopen("password1.out","w",stdout);

	scanf("%d",&n);
	cin>>key;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	run(0,n/2,0,sum1,tot1);
	run(n/2,n,0,sum2,tot2);
	
	for(int i=1;i<=tot1;i++)
	for(int j=1;j<=tot2;j++)
	 if(sum1[i]+sum2[j]==key) ans++;
	cout<<ans<<endl;
	return 0;
}