Pagini recente » Cod sursa (job #411734) | Cod sursa (job #2179694) | Cod sursa (job #1923196) | Cod sursa (job #1622335) | Cod sursa (job #1434870)
#include <cstdio>
#include <algorithm>
using namespace std;
struct LOTO
{
int suma ;
char i1 , i2 , i3 ;
} ;
LOTO v [1000001] ;
int n ;
int d [102] ;
int i , j , k , med ;
long long s ;
bool ceva ( LOTO a, LOTO b)
{
return a.suma < b.suma;
}
int main()
{
freopen ( "loto.in" , "r" , stdin ) ;
freopen ( "loto.out" , "w" , stdout ) ;
scanf ( "%d" , &n ) ;
scanf ( "%lld" , &s ) ;
for ( i = 1 ; i <= n ; i++ )
{
scanf ( "%d" , &d [i] ) ;
}
register int s1 , st , dr , found , l ;
l = n * n * n ;
for ( i = 1 ; i <= n ; i++ )
for ( j = 1 ; j <= n ; j++ )
for ( k = 1; k <= n ; k++ )
{
v[i].i1 = d[i] ;
v[i].i2 = d[j] ;
v[i].i3 = d[k] ;
v[i].suma = d[i] + d[j] + d[k] ;
}
sort ( v + 1 , v + l + 1 , ceva ) ;
for ( i = 1 ; i <= n ; i++ )
for ( j = 1 ; j <= n ; j++ )
for ( k = 1; k <= n ; k++ )
{
s1 = s - ( d[i] + d[j] + d[k] ) ;
st = 1 ;
dr = l ;
found = -1 ;
while( st <= dr )
{
med = ( st + dr ) / 2 ;
if ( v[med].suma == s1 )
{
found = 0 ;
printf ( "%d %d %d %d %d %d\n" , d[i] , d[j] , d[k] , v[med].i1 , v[med].i2 , v[med].i3 ) ;
return 0;
}else
if(v[med].suma < s1)
st = med + 1; else dr = med - 1;
}
}
printf ( "-1\n" ) ;
return 0;
}