Cod sursa(job #1558696)

Utilizator ipus1Stefan Enescu ipus1 Data 29 decembrie 2015 15:10:51
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,pp,q;
int v[101],st[7];
bool vc[100000001];
void back(int k)
    {if(pp==0)
        {if(k==6)
            {int i;
            if(s-st[0]>=0&&s-st[0]<=100000000&&vc[s-st[0]]==1)
                {for(i=1;i<=5;i++)
                    printf("%d ",v[st[i]]);
                printf("%d ",s-st[0]);
                pp=1;
                }
            }
        else
            {int i;
            for(i=st[k-1];i<=q;i++)
                if(st[0]+v[i]<=s&&s-st[0]-v[i]<=(6-k)*v[n-1])
                    {st[0]+=v[i];
                    st[k]=i;
                    back(k+1);
                    st[0]-=v[i];
                    }
                else
                    i=n+1;
            }
        }
    }
int main ()
{freopen ("loto.in","r",stdin);
freopen ("loto.out","w",stdout);
int i;
scanf("%d%d",&n,&s);
for(i=0;i<n;i++)
    {scanf("%d",&v[i]);
    vc[v[i]]=1;
    }
sort(v,v+n);
q=-1;
for(i=0;i<n;i++)
    if(v[i]+5*v[1]<=s&&6*v[i]>=s)
        q=i;
if(q==-1)
    {printf("-1");
    return 0;
    }
back(1);
if(pp==0)
    printf("-1");
return 0;
}