Cod sursa(job #772191)

Utilizator veleanduAlex Velea veleandu Data 28 iulie 2012 18:14:53
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

    #define pb push_back
    #define mod 666013
    #define maxn 101

    typedef struct { long val, E[4]; } my_type;
    vector <my_type> T[mod+5];
    my_type new_el;

    long n,i,j,l,o;
    long s,sum;
    long P[maxn];

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


int main()
{
    in>>n>>sum;
    for ( i=1; i<=n; i++ )
        in>>P[i];

    for ( i=1; i<=n; i++ )
        for ( j=i; j<=n; j++ )
            for ( l=j; l<=n; l++ )
            {
                new_el.val=P[i]+P[j]+P[l];
                new_el.E[1]=i;
                new_el.E[2]=j;
                new_el.E[3]=l;
                T[ new_el.val%mod ].pb ( new_el );
            }

    for ( i=1; i<=n; i++ )
        for ( j=i; j<=n; j++ )
            for ( l=j; l<=n; l++ )
            {
                s=P[i]+P[j]+P[l];
                s=sum-s;
                // cautam s in hash
                if ( s>0 )
                    for ( o=0; o<T[s%mod].size(); o++ )
                    {
                        if ( T[s%mod][o].val == s)
                        {

                            // gasit!
                            out<<P[i]<<" "<<P[j]<<" "<<P[l]<<" "<<P[ T[s%mod][o].E[1] ]<<" "<<P[ T[s%mod][o].E[2] ]<<" "<<P[ T[s%mod][o].E[3] ]<<"\n";
                            return 0;
                        }
                    }
            }
    out<<"-1";
    return 0;
}