#include<iostream>
#include<vector>
using namespace std;
bool sum1(int arr[],int sum,int k,int tsum,int m,int n,vector<int> &elements)
{
if(sum+arr[k]==m)
{
elements.push_back(arr[k]);
return true;
}
else if(k>n)
{
return false;
}
else if(sum+arr[k]+arr[k+1]<=m)
{
elements.push_back(arr[k]);
return sum1(arr,sum+arr[k],k+1,tsum-arr[k],m,n-1,elements);
}
if((sum+tsum-arr[k]>=tsum) && (sum+arr[k+1]<=tsum))
{
elements.push_back(arr[k]);
return sum1(arr,sum,k+1,tsum-arr[k],m,n,elements);
}
return false;
}
int main()
{
vector<int> elements;
int arr[]={4,7,7,17};
if(sum1(arr,0,0,35,18,4,elements))
{
cout<<1;
for(vector<int>::const_iterator it=elements.begin();it!=elements.end();it++){
cout<<endl<<"Value: "<<*it;
}
}
else{
cout<<0;
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKYm9vbCBzdW0xKGludCBhcnJbXSxpbnQgc3VtLGludCBrLGludCB0c3VtLGludCBtLGludCBuLHZlY3RvcjxpbnQ+ICZlbGVtZW50cykKewoKICAgIGlmKHN1bSthcnJba109PW0pCiAgICB7CiAgICAgICAgZWxlbWVudHMucHVzaF9iYWNrKGFycltrXSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBlbHNlIGlmKGs+bikKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBlbHNlIGlmKHN1bSthcnJba10rYXJyW2srMV08PW0pCiAgICB7CiAgICAgICAgZWxlbWVudHMucHVzaF9iYWNrKGFycltrXSk7CiAgICAgICAgcmV0dXJuIHN1bTEoYXJyLHN1bSthcnJba10saysxLHRzdW0tYXJyW2tdLG0sbi0xLGVsZW1lbnRzKTsKICAgIH0KICAgIGlmKChzdW0rdHN1bS1hcnJba10+PXRzdW0pICYmIChzdW0rYXJyW2srMV08PXRzdW0pKQogICAgewogICAgICAgIGVsZW1lbnRzLnB1c2hfYmFjayhhcnJba10pOwogICAgICAgIHJldHVybiBzdW0xKGFycixzdW0saysxLHRzdW0tYXJyW2tdLG0sbixlbGVtZW50cyk7CiAgICB9CgoKICAgIHJldHVybiBmYWxzZTsKfQppbnQgbWFpbigpCnsKICAgIHZlY3RvcjxpbnQ+IGVsZW1lbnRzOwogICAgaW50IGFycltdPXs0LDcsNywxN307CiAgICBpZihzdW0xKGFyciwwLDAsMzUsMTgsNCxlbGVtZW50cykpCiAgICB7CiAgICAgICAgY291dDw8MTsKICAgICAgICBmb3IodmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yIGl0PWVsZW1lbnRzLmJlZ2luKCk7aXQhPWVsZW1lbnRzLmVuZCgpO2l0KyspewogICAgICAgICAgICBjb3V0PDxlbmRsPDwiVmFsdWU6ICI8PCppdDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlewogICAgICAgIGNvdXQ8PDA7CiAgICB9Cn0K