Cod sursa(job #965022)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 22 iunie 2013 22:57:03
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <unordered_set>

using namespace std;

#define Nmax 128

int a[Nmax];
unordered_set <int> sum;

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

int N, S;

void citire()
{
    f >> N >> S;

    for ( int i = 1; i <= N; i++ )
        f >> a[i];

    f.close();
}

void gen()
{
    for ( int i = 1; i <= N; i++ )
        for ( int j = i; j <= N; j++ )
            for ( int k = j; k <= N; k++ )
            {
                sum.insert( a[i] + a[j] + a[k] );
            }
}

void afis( int s )
{
    for ( int i = 1; i <= N; i++ )
        for ( int j = i; j <= N; j++ )
            for ( int k = j; k <= N; k++ )
               if ( a[i] + a[j] + a[k] == s)
                    g << a[i] << " " << a[j] << " " << a[k] << " ";
}

void rezolva()
{
    for ( unordered_set<int>::iterator it = sum.begin(); it != sum.end(); ++it )
    {
        if ( sum.find( S - *it ) != sum.end() )
        {
            afis( S - *it );
            afis( *it );

            return;
        }
    }

    g << "-1";
}

int main()
{
    citire();
    gen();
    rezolva();

    return 0;
}