Pagini recente » Cod sursa (job #565312) | Cod sursa (job #3276245) | Cod sursa (job #500369) | Cod sursa (job #1852627) | Cod sursa (job #1434886)
#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 ;
int 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 ( "%d" , &s ) ;
for ( i = 1 ; i <= n ; i++ )
{
scanf ( "%d" , &d [i] ) ;
}
register int s1 , st , dr , found , l ;
l = 0;
for ( i = 1 ; i <= n ; i++ )
for ( j = 1 ; j <= n ; j++ )
for ( k = 1; k <= n ; k++ )
{
l++;
v[l].i1 = i ;
v[l].i2 = j ;
v[l].i3 = k ;
v[l].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;
}