Cod sursa(job #854440)
#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 = v [ i ] ;
x.t2 = v [ j ] ;
x.t3 = v [ 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 ( int 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;
}