Pagini recente » Cod sursa (job #1746373) | Cod sursa (job #2031139) | Cod sursa (job #1976198) | Cod sursa (job #995432) | Cod sursa (job #1113497)
#include <cstdio>
#include <vector>
#define MAXN 101
#define MOD 1100007
using namespace std;
vector <int> a1[MOD+1];
vector <int> a2[MOD+1];
vector <int> a3[MOD+1];
int v[MAXN];
inline int finds( int sum ) {
int m = sum % MOD;
for( int i = 0 ; i < a1[m].size() ; ++i )
if( a1[m][i] + a2[m][i] + a3[m][i] == sum )
return i;
return -1;
}
int main () {
FILE *f, *g;
f = fopen( "loto.in", "r" );
g = fopen( "loto.out", "w" );
int n, s, sum, m, gasit, p;
fscanf( f, "%d%d", &n, &s );
for( int i = 0 ; i < n ; ++i )
fscanf( f, "%d", &v[i] );
for( int i = 0 ; i < n ; ++i )
for( int j = 0 ; j < n ; ++j )
for( int k = 0 ; k < n ; ++k ) {
sum = v[i] + v[j] + v[k];
m = sum % MOD;
a1[m].push_back(v[i]);
a2[m].push_back(v[j]);
a3[m].push_back(v[k]);
}
gasit = 0;
for( int i = 0 ; i < n && !gasit ; ++i )
for( int j = 0 ; j < n && !gasit ; ++j )
for( int k = 0 ; k < n && !gasit ; ++k ) {
sum = s - v[i]-v[j]-v[k];
if( sum ) {
m = sum % MOD;
p = finds( sum );
if( p != -1 ) {
gasit = 1;
fprintf( g, "%d %d %d %d %d %d\n", v[i], v[j], v[k], a1[m][p], a2[m][p], a3[m][p] );
}
}
}
if( !gasit )
fprintf( g, "-1\n" );
fclose( f );
fclose( g );
return 0;
}