#include <bits/stdc++.h>
using namespace std;
int f(vector<int>&v,vector<int>&ds,int idx, int sum, int k, int& cnt){
if(idx>=v.size() || sum==k){
if(sum==k){
cnt++;
return 1;
// for(int i=0;i<ds.size();i++)
// cout<<ds[i]<<" ";
// cout<<endl;
// return;
}
return 0;
}
sum=sum+v[idx]; ds.push_back(v[idx]);
int l = f(v,ds,idx+1,sum,k,cnt);
sum=sum-v[idx]; ds.pop_back();
int r = f(v,ds,idx+1,sum,k,cnt);
return l+r;
}
int main() {
vector<int>v= {3,1,2,1};
vector<int>ds; int sum=0; int idx=0; int k=4; int cnt=0;
// f(v,ds,idx,sum,k,cnt);
cout<<" count is "<<f(v,ds,idx,sum,k,cnt)<<endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBmKHZlY3RvcjxpbnQ+JnYsdmVjdG9yPGludD4mZHMsaW50IGlkeCwgaW50IHN1bSwgaW50IGssIGludCYgY250KXsKCWlmKGlkeD49di5zaXplKCkgfHwgc3VtPT1rKXsKCQlpZihzdW09PWspewoJCQljbnQrKzsKCQkJcmV0dXJuIDE7CgkJLy8gZm9yKGludCBpPTA7aTxkcy5zaXplKCk7aSsrKQoJCS8vIGNvdXQ8PGRzW2ldPDwiICI7CgkJLy8gY291dDw8ZW5kbDsKCQkvLyByZXR1cm47CgkJfQoJCXJldHVybiAwOwoJfQoJc3VtPXN1bSt2W2lkeF07IGRzLnB1c2hfYmFjayh2W2lkeF0pOwoJaW50IGwgPSBmKHYsZHMsaWR4KzEsc3VtLGssY250KTsKCXN1bT1zdW0tdltpZHhdOyBkcy5wb3BfYmFjaygpOwoJaW50IHIgPSBmKHYsZHMsaWR4KzEsc3VtLGssY250KTsKCXJldHVybiBsK3I7Cn0KaW50IG1haW4oKSB7Cgl2ZWN0b3I8aW50PnY9IHszLDEsMiwxfTsKCXZlY3RvcjxpbnQ+ZHM7IGludCBzdW09MDsgaW50IGlkeD0wOyBpbnQgaz00OyBpbnQgY250PTA7CgkvLyBmKHYsZHMsaWR4LHN1bSxrLGNudCk7Cgljb3V0PDwiIGNvdW50IGlzICI8PGYodixkcyxpZHgsc3VtLGssY250KTw8ZW5kbDsKfQ==