Cod sursa(job #1452252)

Utilizator ZenusTudor Costin Razvan Zenus Data 20 iunie 2015 14:12:57
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <unordered_map>
#include <iostream>

using namespace std;

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

const int MOD = 1117;
const int NSIZE = 100 + 10;

int x[NSIZE];
unordered_map < int , pair < int , pair < int , int > > > iH;
int i , j , k , ii , jj , kk , crt , s , N;

void inH(int i,int j,int k)
{
    int crt = x[i] + x[j] + x[k];
    iH[crt] = make_pair(i , make_pair(j , k));
}

bool findH(int s)
{
    if (iH[s] == make_pair(0 , make_pair(0 , 0))) return false;

    ii = iH[s].first;
    jj = iH[s].second.first;
    kk = iH[s].second.second;
}

int main()
{

fin >> N >> s;

for (i = 1 ; i <= N ; ++i)
fin >> x[i];

for (i = 1 ; i <= N ; ++i)
for (j = 1 ; j <= N ; ++j)
for (k = 1 ; k <= N ; ++k)
inH(i,j,k);

for (i = 1 ; i <= N ; ++i)
for (j = 1 ; j <= N ; ++j)
for (k = 1 ; k <= N ; ++k)
{
    crt = x[i] + x[j] + x[k];

    if (findH(s - crt))
    {
        fout << x[i] << " ";
        fout << x[j] << " ";
        fout << x[k] << " ";
        fout << x[ii] << " ";
        fout << x[jj] << " ";
        fout << x[kk] << '\n';

        return 0;
    }
}

fout << "-1" << '\n';

return 0;
}