Cod sursa(job #1223064)

Utilizator lucian666Vasilut Lucian lucian666 Data 25 august 2014 13:20:05
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.82 kb



#include <fstream>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <iostream>
#include <cstring>

#define NMAX 105
#define MOD 666013
#define pb push_back

using namespace std;
ofstream out("loto.out");

int n , v[NMAX] , S;

vector <int>G[MOD];




int cauta( int x )
{

    int k = x % MOD;

    vector < int >:: iterator i;

    for( i = G[k].begin() ; i!=G[k].end() ; ++i )
        if( *i == x )
            return 1;

    return 0;

}

void add( int x )
{

    int k = x % MOD;

    if( !cauta(x) )
        G[k].pb(x);

}

int main()
{

    ifstream in("loto.in");

    int i , j , k , s;

    in >> n >> S;

    for( i = 1;  i<=n ; i++)
        in >> v[i];

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

    for( i = 1;  i<=n ; i++)
        for( j = i  ; j<=n ; j++)
            for( k = j ; k <=n ; k++)
                {
                    int p = 0;
                    p = v[i] + v[j] + v[k];
                    add(p);
                }

    for( i = 1 ; i<=n ; i++)
        for( j = i ; j<=n ; j++)
            for( k = j ; k<=n ; k++)
                {

                    s = S - v[i] - v[j] - v[k];
                    if( s>=0 )
                        if( cauta(s))
                        {

                            for( int x = 1 ; x<=n ; x++)
                                for( int y = x ; y <=n ; y++)
                                    for( int z = y ; z<=n ; z++)
                                        if( v[x] + v[y] + v[z] == s )
                            {
                            out << v[i] << " " << v[j] << " " << v[k] <<" " << v[x] << " " << v[y] << " " << v[z];
                            exit(0);
                            }

                        }

                }

    out << -1;
    return 0;
}