Pagini recente » Cod sursa (job #2846510) | Cod sursa (job #2758172) | Cod sursa (job #2847815) | Cod sursa (job #2948726) | Cod sursa (job #1707847)
# include <stdio.h>
# include <stdlib.h>
# include <vector>
# include <iostream>
# define MAX_N 101
# define infinit 100000001
# define MOD 65535
using namespace std;
int v[MAX_N];
struct pereche {
int a, b, c;
int s;
} notfound, p, aux;
vector<struct pereche> h[MOD + 1];
void push( pereche a ) {
h[a.s & MOD].push_back( a );
}
pereche find( int s ) {
int i = 0;
while ( i < h[s & MOD].size() && h[s & MOD][i].s != s )
i ++;
if ( i < h[s & MOD].size() )
return h[s & MOD][i];
else
return notfound;
}
int main() {
notfound.s = -1;
FILE *fin = fopen( "loto.in", "r" ), *fout = fopen( "loto.out", "w" );
int n, i, j, k, S;
fscanf( fin, "%d%d", &n, &S );
for ( i = 1; i <= n; i ++ )
fscanf( fin, "%d", &v[i] );
i = j = k = 1;
while ( i <= n && ( v[i] + v[j] + v[k] >= S || find( S - v[i] - v[j] - v[k] ).s == -1 ) ) {
aux.a = v[i];
aux.b = v[j];
aux.c = v[k];
aux.s = v[i] + v[j] + v[k];
push( aux );
k ++;
if ( k > n ) {
k = 1;
j ++;
if ( j > n ) {
j = 1;
i ++;
}
}
}
if ( i <= n ) {
p = find( S - v[i] - v[j] - v[k] );
fprintf( fout, "%d %d %d %d %d %d", p.a, p.b, p.c, v[i], v[j], v[k] );
} else
fprintf( fout, "-1" );
fclose( fin );
fclose( fout );
return 0;
}