Cod sursa(job #2590469)

Utilizator AlexBosneag26Bosneag Alexandru AlexBosneag26 Data 28 martie 2020 00:03:40
Problema Loto Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <vector>


using namespace std;

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

const int N = 100, M = 666019;

int a[N];

vector <int> v[N * N * N];

struct trei {
    int a, b, c, sum;
}sume3[N * N * N];

void adauga(int nr)
{
    int categ = (sume3[nr].sum) % M;
    v[categ].push_back(nr);
}

int main()
{
    int n, s, nr = 0;
    in >> n >> s;

    for(int i = 1; i <= n; i++)
        in >> a[i];

    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            for(int k = 1; k <= n; k++)
            {
                sume3[++nr] = {a[i], a[j], a[k], a[i]+a[j]+a[k]};
                adauga(nr);
            }
        }
    }

    for(int i = 1; i <= nr; i++)
    {
        if(v[(s - sume3[i].sum) % M].size() > 0)
        {
            int j = (s - sume3[i].sum) % M;
            for(int k = 0; k < v[j].size(); k++)
            {
                if(sume3[i].sum + sume3[v[j][k]].sum == s)
                {
                    out << sume3[i].a << " " << sume3[i].b << " "
                    << sume3[i].c << " " << sume3[v[j][k]].a << " " << sume3[v[j][k]].b << " " << sume3[v[j][k]].c;
                    return 0;
                }
            }
        }
    }
    out << -1;
    return 0;
}