Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- vector<ll>v1,v2,coin;
- void subset(ll i,ll n,ll sum)
- {
- if(i==n)
- {
- v1.push_back(sum);
- return;
- }
- subset(i+1,n,sum);
- subset(i+1,n,sum+coin[i]);
- subset(i+1,n,sum+coin[i]+coin[i]);
- }
- void subset1(ll i,ll n,ll sum)
- {
- if(i==n)
- {
- v2.push_back(sum);
- return;
- }
- subset1(i+1,n,sum);
- subset1(i+1,n,sum+coin[i]);
- subset1(i+1,n,sum+coin[i]+coin[i]);
- }
- int main()
- {
- ll t,i,j,k,n,m,a,b,c,d,e;
- scanf("%lld",&t);
- for(ll cas=1; cas<=t; cas++)
- {
- coin.clear();
- v1.clear();
- v2.clear();
- scanf("%lld %lld",&n,&k);
- for(i=0; i<n; i++)
- {
- cin>>e;
- coin.push_back(e);
- }
- a=n/2;
- subset(0,a,0);
- subset1(a,n,0);
- sort(v1.begin(),v1.end());
- sort(v2.begin(),v2.end());
- bool flag=false;
- cout<<"Case "<<cas<<": ";
- for(i=0; i<v2.size(); i++)
- {
- if(binary_search(v2.begin(),v2.end(),k-v1[i]))
- {
- flag=true;
- break;
- }
- }
- if(flag)
- cout<<"Yes"<<endl;
- else
- cout<<"No"<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment