Cod sursa(job #815019)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 16 noiembrie 2012 15:17:47
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <cstdlib>
#include <cstdio>
#include <vector>

#define M 666013

using namespace std;

struct sumede3
{
    int suma,t1,t2,t3;
};

int v[101],S;
vector<sumede3> hash[M];

int main()
{
    FILE *fin,*fout;
    fin = fopen("loto.in","r");
    fout = fopen("loto.out","w");

    int n;
    fscanf(fin,"%d %d ",&n,&S);

    for ( int i = 1; i <= n ; i++)
        fscanf(fin,"%d",&v[i]);

    for ( int i = 1 ; i <= n ; i++ )
        for ( int j = i ; j <= n ; j++ )
            for (int k = j ; k <= n ; k++)
            {
                int r,s = v[i] + v[j] + v[k];
                if (s >= S) continue;
                r = s%M;
                sumede3 x;
                x.suma = s;
                x.t1 = i;
                x.t2 = j;
                x.t3 = k;
                hash[r].push_back(x);

            }
    int ok = 0;
    for ( int  i = 1; i <= n ; i++ )
        for ( int  j = i; j <= n; j++ )
            for ( int k = j ; k <= n ; k++ )
            {
                int scaut,r,s = v[i] + v[j] + v[k];

                scaut = S - s;
                if ( scaut  <= 0 ) continue;
                r = scaut%M;
                for (size_t it = 0; it < hash[r].size() ; it++)
                    if ( scaut == hash[r][it].suma )
                        {
                            fprintf(fout,"%d %d %d ",v[i],v[j],v[k]);
                            fprintf(fout,"%d %d %d\n",hash[r][it].t1,hash[r][it].t2,hash[r][it].t3);
                            ok = 1; goto here;
                        }





            }

    here:
    if ( !ok ) fprintf(fout,"-1");
    return 0;



}