question https://hack.codingblocks.com/contests/c/512/513
my code
#include
using namespace std;
#define ll long long
ll int res=0;
ll int ans =0;
ll int sum=0;
ll subsetc(ll int a[],ll int i,ll int j,ll int k,ll int n,ll int t){
if(i==n){
return ans;
}
else{
if(j<n){
if(k<=j){
res +=a[k];
//cout<<a[k]<<" “;
subsetc(a,i,j,k+1,n,t);
}
else{
//cout<<sum<<” ";
if(res==t){
ans++;
}
res=0;
// cout<<endl;
subsetc(a,i,j+1,i,n,t);
}
}
else{
subsetc(a,i+1,i+1,i+1,n,t);
}
}
}
void subset( ll int a[],ll int i,ll int j,ll int k,ll int n,ll int t){
if(i==n){
return ;
}
else{
if(j<n){
if(k<=j){
sum +=a[k];
//cout<<a[k]<<" ";
subset(a,i,j,k+1,n,t);
}
else{
//cout<<sum<<" ";
if(sum==t){
//cout<<a[k]<<" ";
ll int left = i;
ll int right = j;
for (ll int m =left;m<=right;m++){
cout<<a[m]<<" ";
//cout<<endl;
}
cout<<" ";
}
sum=0;
// cout<<endl;
subset(a,i,j+1,i,n,t);
}
}
else{
subset(a,i+1,i+1,i+1,n,t);
}
}
}
int main() {
ll int n;
cin>>n;
ll int a[n];
for (int i=0;i<n;i++){
cin>>a[i];
}
ll int t;
cin>>t;
cout<<subsetc(a,0,0,0,n,t);
cout<<endl;
subset(a,0,0,0,n,t);
return 0;
}
only 1test case passed