Cod sursa(job #964137)

Utilizator poptibiPop Tiberiu poptibi Data 20 iunie 2013 11:22:43
Problema Loto Scor 75
Compilator cpp Status done
Runda becalisme Marime 1.14 kb
#include <cstdio>
#include <cstdlib>
#include <map>
#include <algorithm>
using namespace std;

#define Nmax 110

int N, S, V[Nmax];
map<int, int> Hash;

void Reconstruct(int V1, int V2, int V3)
{
    int FinS = S - V1 - V2 - V3;
    for(int i = 1; i <= N; ++ i)
        for(int j = 1; j <= N; ++ j)
            for(int k = 1; k <= N; ++ k)
                if(V[i] + V[j] + V[k] == FinS)
                {
                    printf("%i %i %i %i %i %i\n", V1, V2, V3, V[i], V[j], V[k]);
                    exit(0);
                }
}

int main()
{
    freopen("loto.in", "r", stdin);
    freopen("loto.out", "w", stdout);

    scanf("%i %i", &N, &S);
    for(int i = 1; i <= N; ++ i)
        scanf("%i", &V[i]);

    for(int i = 1; i <= N; ++ i)
        for(int j = 1; j <= N; ++ j)
            for(int k = 1; k <= N; ++ k)
                Hash[V[i] + V[j] + V[k]] = 1;

    for(int i = 1; i <= N; ++ i)
        for(int j = 1; j <= N; ++ j)
            for(int k = 1; k <= N; ++ k)
                if(Hash.count(S - V[i] - V[j] - V[k]))
                    Reconstruct(V[i], V[j], V[k]);

    printf("-1");
    return 0;
}