Cod sursa(job #2132796)

Utilizator burnfireStefanescu Petru burnfire Data 16 februarie 2018 01:01:07
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");
int x[7],a[101],n,s,sol[7];
void citire()
{
    f>>n>>s;
    for(int i=1; i<=n; i++)
        f>>a[i];
}
bool valid(int k)
{
    return k<=6;
}
bool solutie(int k,int sum)
{
    return k==6&&sum==s;
}
void back(int k=1,int s=0)
{
    for(int i=1; i<=n&&sol[1]==0; i++)
    {
        x[k]=i;
        s+=a[i];
        if(valid(k))
        {
            if(solutie(k,s))
            {
                for(int i=1; i<=6; i++)
                    sol[i]=a[x[i]];
            }
            else
                back(k+1,s);
        }
        s-=a[i];
    }
}
bool e_zero()
{
    for(int i=1; i<=6; i++)
        if(sol[i]==0)
            return 1;
    return 0;
}
int main()
{
    int maxim=0;
    citire();
    for(int i=1; i<=n; i++)
    {
        if(maxim<a[i])
            maxim=a[i];
    }
    if(maxim*6<s)
        g<<-1;
    else
    {
        back();
        if(e_zero()==false)
        {
            for(int i=1; i<=6; i++)
                g<<sol[i]<<' ';
        }
        else
            g<<-1;
    }
    return 0;
}