Cod sursa(job #1023782)

Utilizator blasterzMircea Dima blasterz Data 7 noiembrie 2013 18:41:10
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <algorithm>
#include <map>

using namespace std;

int n, a[102], S;
void afis(int x, int y, int z)
{
    int i, j, k, s= S - a[x] - a[y] - a[z];
    for(i=1; i <= n; ++i)
        for(j=i; j <= n; ++j)
            for(k=j; k <= n; ++k)
                if(a[i] + a[j] + a[k] == s)
                {
                    printf("%d %d %d %d %d %d\n", a[x], a[y], a[z], a[i], a[j], a[k]);
                    exit(0);
                }
}

int main() {
    freopen ("loto.in", "r", stdin);
    freopen ("loto.out", "w", stdout);
    scanf ("%d %d\n", &n, &S);
    int i, j, k, s;
    for (i = 1; i <= n; ++i)
        scanf ("%d", &a[i]);
    
    sort(a + 1, a + n + 1);
    map<int, bool> hash;
    for (i = 1; i <= n; ++i)
        for (j = i; j <= n; ++j)
            for (k = j; k <= n; ++k)
                hash[a[i] + a[j] + a[k] ] = true;
    for (i = 1; i <= n; ++i)
        for (j = i; j <= n; ++j)
            for (k =j; k <= n; ++k) {
                s = S - a[i] - a[j] - a[k];
                if (s >= 0)
                    if (hash[s] == true)
                        afis(i, j, k);
            }
    printf ("-1\n");
}