Cod sursa(job #1553504)

Utilizator pulseOvidiu Giorgi pulse Data 19 decembrie 2015 22:51:48
Problema Loto Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <tuple>

using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");

const int MOD = 666013;
int N, S;
int a[105];
vector<pair<int, tuple<int, int, int> > > H[MOD];

int main()
{
    fin >> N >> S;
    for (int i = 1; i <= N; ++i)
        fin >> a[i];

    for (int i = 1; i <= N; ++i)
    {
        for (int j = i; j <= N; ++j)
        {
            for (int k = j; k <= N; ++k)
            {
                int sum = a[i] + a[j] + a[k];
                H[sum % MOD].push_back(make_pair(sum, make_tuple(a[i], a[j], a[k])));
            }
        }
    }

    for (int i = 1; i <= N; ++i)
    {
        for (int j = i; j <= N; ++j)
        {
            for (int k = j; k <= N; ++k)
            {
                int sum = S - a[i] - a[j] - a[k];
                int pos = sum % MOD;
                for (auto it = H[pos].begin(); it != H[pos].end(); ++it)
                {
                    if (it->first == sum)
                    {
                        auto tup = it->second;
                        fout << a[i] << ' ' << a[j] << ' ' << a[k] << ' ' << get<0>(tup) << ' ' << get<1>(tup) << ' ' << get<2>(tup);
                        return 0;
                    }
                }
            }
        }
    }

    fout << -1;

    return 0;
}