//un patron are o suma s;ce jucatori poate lua
#include<iostream.h>
#include<conio.h>
#include<math.h>
int st[20],n,p,s,a[20];


int valid(int p)
{int suma=0;
for(int i=1;i<p;i++)
if(st[i]>=st[p]) return 0;
for(i=1;i<=p;i++) suma=suma+a[st[i]];
if(suma>s) return 0;
return 1;}

int sol(int p)
{int suma=0;
for(int i=1;i<=p;i++) suma=suma+a[st[i]];
return (suma==s);}

void tipar(int p)
{for(int i=1;i<=p;i++) cout<<st[i];
cout<<endl;
}

void bkt(int p)
{
int val;
for(val=1;val<=n;val++)
{
st[p]=val;
if(valid(p)) if(sol(p))
tipar(p);
else bkt(p+1);
}
}

void main()
{cout<<"n=";cin>>n;
cout<<"s=";cin>>s;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin>>a[i];}

bkt(1);}

{joscommentenable}