Cod sursa(job #856901)

Utilizator blechereyalBlecher Eyal blechereyal Data 17 ianuarie 2013 06:06:52
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>
#include <cstdlib>
#include <vector>
#define NMAX 102
#define SMAX 600000000
#define MOD 666013

using namespace std;
using namespace __gnu_cxx;
ifstream f("loto.in");
ofstream g("loto.out");
typedef struct points {int a,b,c;} POINTS;
vector <POINTS> hash[SMAX%MOD];
vector <POINTS>::iterator it;
int V[NMAX],N,S;
int main()
{
    int i,j,k,suma;
    f>>N>>S;
    for (int i=1;i<=N;i++)
     f>>V[i];
    for (int i=1;i<=N;i++)
        for (int j=1;j<=N;j++)
            for (int k=1;k<=N;k++)
                {
                    suma=V[i]+V[j]+V[k];
                    if (suma<=S)
                        hash[abs(suma%MOD)].push_back({i,j,k});
                }

    for (int i=1;i<=N;i++)
        for (int j=1;j<=N;j++)
            for (int k=1;k<=N;k++)
                {
                    suma=V[i]+V[j]+V[k];
                    suma=S-suma;
                        for (it=hash[abs(suma%MOD)].begin();it!=hash[abs(suma%MOD)].end();it++)
                         {

                             if (V[(*it).a]+V[(*it).b]+V[(*it).c]==suma) {
                                            g<<V[i]<<" "<<V[j]<<" "<<V[k]<<" "<<V[(*it).a]<<" "<<V[(*it).b]<<" "<<V[(*it).c];
                                            return 0;
                                            }
                         }

                }

g<<"-1";
    return 0;
}