Cod sursa(job #2210977)

Utilizator bisarenaBudai Istvan bisarena Data 8 iunie 2018 22:08:27
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int x[100], v[6], N, S, ok=0;

ifstream f("loto.in");
ofstream g("loto.out");

int comp(const void* a, const void* b)
   {
     int* arg1 = (int*) a;
     int* arg2 = (int*) b;
     if( *arg1 > *arg2 ) return -1;
     else if( *arg1 == *arg2 ) return 0;
     else return 1;
   }

bool accept(int p)
{
   return true;
}

void Back(int i)
{
    for (int j=0; j<N; j++)
    {
        v[i]=j;
        //cout<<i<<" "<<v[i]<<" ";
        //system("pause");
        if (accept(i))
        {
            if (i<=5) Back(i+1);
            else
            {
                int T=0;
                for (int k=0; k<i; ++k) T += x[v[k]];
                if (T==S)
                    {
                        for(int k=0; k<i; ++k) g<<x[v[k]]<<" ";
                        ok=1;
                        exit(0);
                    }
            }
        }
    }
}

int main()
{
    f >> N >> S;
    //cout << N << S << endl;
    for (int i=0; i<=N-1; ++i) f >> x[i];
    if (6*x[0]>S || 6*x[N-1]<S)
    {
        g << -1;
        f.close();
        g.close();
        return 0;
    }
    qsort(x, N, sizeof(int), comp);
    Back(0);
    if(ok==0) g<<-1;
    f.close(); g.close();
    return 0;
}