Pagini recente » Ciorna | Istoria paginii runda/cei_mai_mari_olimpicari_runda_1/clasament | Cod sursa (job #1501393) | Cod sursa (job #2198937) | Cod sursa (job #871932)
Cod sursa(job #871932)
#include<stdio.h>
#include<vector>
#define MOD 666013
using namespace std ;
vector < int > h [ 666017 ] ;
int n , s , sum , val2 ;
int a [ 107 ] ;
bool cb ( long x , long ind )
{
for ( int i = 0 ; i != h [ ind ] . size ( ) ; ++ i )
if ( h [ ind ] [ i ] == x )
return 1 ;
return 0 ;
}
int main ( )
{
freopen ( "loto.in" , "r" , stdin ) ;
freopen ( "loto.out" , "w" , stdout ) ;
scanf ( "%d %d" , &n , &s ) ;
for ( int i = 1 ; i <= n ; ++ i )
scanf ( "%d" , &a [ i ] ) ;
for ( int i = 1 ; i <= n ; ++ i )
for ( int j = i ; j <= n ; ++ j )
for ( int k = j ; k <= n ; ++ k )
h [ ( a [ i ] + a [ j ] + a [ k ] ) % 666013 ] . push_back ( a [ i ] + a [ j ] + a [ k ] ) ;
for ( int i = 1 ; i <= n ; ++ i )
for ( int j = i ; j <= n ; ++ j )
for ( int k = j ; k <= n ; ++ k )
{
sum = a [ i ] + a [ j ] + a [ k ] ;
if ( s - sum >= 0 )
{
int val3 = 0 , val2 = ( s - sum ) % MOD ;
bool ok ;
val3 = cb ( s-sum , val2 ) ;
if ( val3 == 1 )
{
ok = 0 ;
for ( int i1 = 1 ; i1 <= n && ok == 0 ; ++ i1 )
for ( int j1 = i1 ; j1 <= n && ok == 0 ; ++ j1 )
for ( int k1 = j1 ; k1 <= n && ok == 0 ; ++ k1 )
if ( a [ i1 ] + a [ j1 ] + a [ k1 ] == s - sum )
printf ( "%d %d %d " , a [ i1 ] , a [ j1 ] , a [ k1 ] ) , ok = 1 ;
printf ( "%d %d %d\n" , a [ i ] , a [ j ] , a [ k ] ) ;
return 0 ;
}
}
}
printf ( "-1" ) ;
return 0 ;
}