Cod sursa(job #686977)

Utilizator michael9ufoStanescu Mihai michael9ufo Data 21 februarie 2012 23:36:22
Problema Loto Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int a, b, c, d, e, f;

long S_C, NR[101];

int main()
{

    freopen("loto.in", "r", stdin);

    freopen("loto.out", "w", stdout);

    int n;

    bool stop = 0;

    long S;

    cin>>n>>S;

    for(a=1;a<=n;++a)
        cin>>NR[a];

    fclose(stdin);

    sort(NR+1, NR+n+1);

    if(NR[n] * 6 < S)
        cout<<"-1"<<"\n";
    else
    {

        for(a=n;a>=1 && !stop;--a)
        {

            if(NR[a]+NR[b]+5*NR[n] < S)
             {
                 cout<<"-1\n";  break;
             }

            for(b=a;b>=1 && !stop;--b)
            {
                if(NR[a]+NR[b]+4*NR[n] < S)
                    break;

                for(c=b;c>=1 && !stop;--c)
                {

                    if(NR[a]+NR[b]+NR[c]+3*NR[n] < S)
                        break;

                    for(d=c;d>=1 && !stop;--d)
                    {

                        if(NR[a]+NR[b]+NR[c]+NR[d]+2*NR[n] < S)
                            break;

                        for(e=d;e>=1 && !stop;--e)
                        {
                            if(NR[a]+NR[b]+NR[c]+NR[d]+NR[e]+NR[n] < S)
                                break;

                            for(f=e;f>=1 && !stop;--f)
                                if(NR[a]+NR[b]+NR[c]+NR[d]+NR[e]+NR[f] == S)
                                {
                                    cout<<NR[a]<<" "<<NR[b]<<" "<<NR[c]<<" "<<NR[d]<<" "<<NR[e]<<" "<<NR[f]<<"\n";
                                    stop = 1;
                                    break;
                                }

                        }

                    }

                }

            }

        }
    if(!stop)
        cout<<"-1"<<"\n";

    }

    fclose(stdout);

    return 0;

}