Cod sursa(job #2022567)

Utilizator ArmandNMArmand Nicolicioiu ArmandNM Data 16 septembrie 2017 18:56:31
Problema Loto Scor 100
Compilator cpp Status done
Runda test_penali Marime 1.6 kb
#include <fstream>
#include <vector>
#include <algorithm>
 
const int NMAX = 105;
const int HMAX = 666013;
 
 
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
 
struct hashy
{
    int nr1;
    int nr2;
    int nr3;
};
 
int N,S,v[NMAX];
vector <hashy> HH[HMAX+5];
 
int main()
{
    f >> N >> S;
 
    for (int i = 1; i <= N; ++i)
    {
        f >> v[i];
    }
 
    sort(v+1,v+N+1);
 
    for (int i = 1; i <= N; ++i)
    {
        for (int j = i; j <= N; ++j)
        {
            for (int k = j; k <= N; ++k)
            {
                int key = (v[i]+v[j]+v[k]) % HMAX;
                hashy element;
                element.nr1 = v[i];
                element.nr2 = v[j];
                element.nr3 = v[k];
                HH[key].push_back(element);
            }
        }
    }
 
    for (int i = 1; i <= N; ++i)
    {
        for (int j = i; j <= N; ++j)
        {
            for (int k = j; k <= N; ++k)
            {
                int sum = S - (v[i]+v[j]+v[k]);
                if (sum >= 0)
                {
                    int key = sum % HMAX;
                    for (int it = 0 ; it < HH[key].size(); ++it)
                    {
                        if (HH[key][it].nr1 + HH[key][it].nr2 + HH[key][it].nr3 == sum)
                        {
                            g << v[i] << " " << v[j] << " " << v[k] << " " << HH[key][it].nr1 << " " << HH[key][it].nr2 << " " << HH[key][it].nr3;
                            return 0;
                        }
                    }
                }
            }
        }
    }
 
    g << "-1";
 
    f.close();
    g.close();
    return 0;
}