#include <bits/stdc++.h>
using namespace std;
void 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;}
return;
}
sum=sum+v[idx]; ds.push_back(v[idx]);
f(v,ds,idx+1,sum,k,cnt);
sum=sum-v[idx]; ds.pop_back();
f(v,ds,idx+1,sum,k,cnt);
}
int main() {
vector<int>v= {3,1,2};
vector<int>ds; int sum=0; int idx=0; int k=3; int cnt=0;
f(v,ds,idx,sum,k,cnt);
cout<<" count is "<<cnt<<endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgZih2ZWN0b3I8aW50PiZ2LHZlY3RvcjxpbnQ+JmRzLGludCBpZHgsIGludCBzdW0sIGludCBrLCBpbnQgY250KXsKCWlmKGlkeD49di5zaXplKCkgfHwgc3VtPT1rKXsKCQlpZihzdW09PWspCgkJe2NudCsrOyByZXR1cm47fQoJCXJldHVybjsKCX0KCXN1bT1zdW0rdltpZHhdOyBkcy5wdXNoX2JhY2sodltpZHhdKTsKCWYodixkcyxpZHgrMSxzdW0sayxjbnQpOwoJc3VtPXN1bS12W2lkeF07IGRzLnBvcF9iYWNrKCk7CglmKHYsZHMsaWR4KzEsc3VtLGssY250KTsKfQppbnQgbWFpbigpIHsKCXZlY3RvcjxpbnQ+dj0gezMsMSwyfTsKCXZlY3RvcjxpbnQ+ZHM7IGludCBzdW09MDsgaW50IGlkeD0wOyBpbnQgaz0zOyBpbnQgY250PTA7CglmKHYsZHMsaWR4LHN1bSxrLGNudCk7Cgljb3V0PDwiIGNvdW50IGlzICI8PGNudDw8ZW5kbDsKfQ==