Cod sursa(job #1558614)

Utilizator ASTELOTudor Enescu ASTELO Data 29 decembrie 2015 13:53:49
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<cstdio>
#include<bitset>
#include<algorithm>
using namespace std;
int s,st[7],i,j,n,m,kk,v[101],pp=0;
std::bitset<100000001> vc;
void back(int k,int sum)
    {
    if(pp==0)
        {
        int i;
        if(k==6)
            {
            if(vc[s-sum]==1)
                {
                pp=1;
                for(i=1;i<=5;i++)
                    printf("%d ",v[st[i]]);
                printf("%d ",s-sum);
                }
            }
        else
            for(i=st[k-1];i<=kk;i++)
                if(sum+v[i]+(6-k)*v[kk]>=s)
                    {
                    st[k]=i;
                    back(k+1,sum+v[i]);
                    }
        }
    }
int main ()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
for(i=1;i<=n;i++)
    {
    scanf("%d",&v[i]);
    vc[v[i]]=1;
    }
sort(v+1,v+n+1);
st[0]=1;
for(i=n;i>=1;i--)
    if(v[i]<s)
        {
        kk=i;
        break;
        }
back(1,0);
if(pp==0)
    printf("-1");
return 0;
}