Pagini recente » Cod sursa (job #750478) | Cod sursa (job #2978121) | Cod sursa (job #795957) | Cod sursa (job #3255831) | Cod sursa (job #1707819)
# include <stdio.h>
# include <stdlib.h>
# include <algorithm>
# define MAX_N 101
# define infinit 100000001
int v[MAX_N];
struct pereche {
unsigned char a, b, c;
} p[MAX_N * MAX_N * MAX_N];
int s( struct pereche a ) {
return v[a.a] + v[a.b] + v[a.c];
}
int cmp( struct pereche a, struct pereche b ) {
return s( a ) <= s( b );
}
int main() {
FILE *fin = fopen( "loto.in", "r" ), *fout = fopen( "loto.out", "w" );
int n, i, j, k, m, S;
fscanf( fin, "%d%d", &n, &S );
m = 1;
for ( i = 1; i <= n; i ++ ) {
fscanf( fin, "%d", &v[i] );
for ( j = 1; j <= n; j ++ )
for ( k = 1; k <= n; k ++ ) {
p[m].a = i;
p[m].b = j;
p[m].c = k;
m ++;
}
}
v[0] = infinit;
std::sort( p + 1, p + m, cmp );
// for ( i = 1; i < m; i ++ )
// printf( "%d ", s( p[i] ) );
j = m;
i = 1;
do {
while ( j > 0 && s( p[i] ) + s( p[j] ) > S )
j --;
if ( s( p[i] ) + s( p[j] ) != S )
i ++;
} while ( i <= j && s( p[i] ) + s( p[j] ) != S );
if ( i <= j )
fprintf( fout, "%d %d %d %d %d %d", v[p[i].a], v[p[i].b], v[p[i].c], v[p[j].a], v[p[j].b], v[p[j].c] );
else
fprintf( fout, "-1" );
fclose( fin );
fclose( fout );
return 0;
}