#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[]={7,11,13,24};
if(sum1(arr,0,1,48,24,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+IGVsZW1lbnRzOwogICAgaW50IGFycltdPXs3LDExLDEzLDI0fTsKICAgIGlmKHN1bTEoYXJyLDAsMSw0OCwyNCw0LGVsZW1lbnRzKSkKICAgIHsKICAgICAgICBjb3V0PDwxOwogICAgICAgIGZvcih2ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQ9ZWxlbWVudHMuYmVnaW4oKTtpdCE9ZWxlbWVudHMuZW5kKCk7aXQrKyl7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw8PCJWYWx1ZTogIjw8Kml0OwogICAgICAgIH0KICAgIH0KICAgIGVsc2V7CiAgICAgICAgY291dDw8MDsKICAgIH0KfQo=