Pagini recente » Cod sursa (job #1479417) | Cod sursa (job #6269) | Cod sursa (job #2749447) | Cod sursa (job #2609350) | Cod sursa (job #2672347)
#include <stdio.h>
#include <vector>
#define MOD 10007
using namespace std;
int v[100], variab[6];
vector<int> myHash[10007];
bool cauta( int x ) {
int cod = x % MOD;
unsigned int i = 0;
while ( i < myHash[cod].size() && myHash[cod][i] != x )
i++;
return i < myHash[cod].size();
}
void adauga( int x ) {
int cod = x % MOD;
unsigned int i = 0;
while ( i < myHash[cod].size() && myHash[cod][i] != x)
i++;
if ( i == myHash[cod].size() )
myHash[cod].push_back( x );
}
void sterge( int x ) {
int cod = x % MOD;
unsigned int i = 0;
while ( i < myHash[cod].size() && myHash[cod][i] != x )
i++;
if ( i < myHash[cod].size() )
myHash[cod].erase( myHash[cod].begin() + i );
}
int main() {
FILE *fin, *fout;
int n, s, i, j, k, x, y, z, ok;
fin = fopen( "loto.in", "r" );
fout = fopen( "loto.out", "w" );
fscanf( fin, "%d%d", &n, &s );
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d", &v[i] );
}
for ( i = 0; i < n; i++ ) {
for ( j = i; j < n; j++ ) {
for ( k = j; k < n; k++ ) {
adauga( v[i] + v[j] + v[k] );
}
}
}
ok = 0;
for ( i = 0; i < n; i++ ) {
for ( j = i; j < n; j++ ) {
for ( k = j; k < n; k++ ) {
if ( cauta( s - (v[i] + v[j] + v[k]) ) == 1 ) {
ok = 1;
variab[0] = v[i];
variab[1] = v[j];
variab[2] = v[k];
for ( x = 0; x < n; x++ ) {
for ( y = x; y < n; y++ ) {
for ( z = y; z < n; z++ ) {
if ( s - (v[i] + v[j] + v[k]) == v[x] + v[y] + v[z] ) {
variab[3] = v[x];
variab[4] = v[y];
variab[5] = v[z];
}
}
}
}
}
}
}
}
if ( ok == 1 ) {
for ( i = 0; i < 6; i++ ) {
fprintf( fout, "%d ", variab[i] );
}
} else {
fprintf( fout, "-1" );
}
fclose( fin );
fclose( fout );
return 0;
}