Cod sursa(job #1771990)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 6 octombrie 2016 13:03:40
Problema Loto Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.47 kb
#include <cstdio>
#include <algorithm>
#include <vector>

#define MOD 666013

using namespace std;

vector <int> v[MOD];

inline bool fin (int val)
{
    if (val < 0) return false;
    int ind = val % MOD;
    for (auto &it : v[ind])
        if (it == val) return true;

    return false;
}

inline void add (int val)
{
    int ind = val % MOD;
    for (auto &it : v[ind])
        if (it == val) return;

    v[ind].push_back (val);
}

int a[128];

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

    int n, sum;
    scanf ("%d %d", &n, &sum);

    for (int i = 1; i <= n; ++i)
        scanf ("%d", &a[i]);

    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= n; ++j)
            for (int h = 1; h <= n; ++h)
            {
                int ss = a[i] + a[j] + a[h];
                add (ss);
                if (fin (sum - ss))
                {
                    printf ("%d %d %d ", a[i], a[j], a[h]);

                    for (i = 1; i <= n; ++i)
                        for (j = 1; j <= n; ++j)
                            for (h = 1; h <= n; ++h)
                                if (a[i] + a[j] + a[h] == sum - ss)
                                {
                                    printf ("%d %d %d\n", a[i], a[j], a[h]);
                                    return 0;
                                }
                }
            }

    printf ("-1\n");

    return 0;
}