Pagini recente » Cod sursa (job #1465448) | Cod sursa (job #2160079) | Cod sursa (job #2050424) | Cod sursa (job #1823635) | Cod sursa (job #1223064)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <iostream>
#include <cstring>
#define NMAX 105
#define MOD 666013
#define pb push_back
using namespace std;
ofstream out("loto.out");
int n , v[NMAX] , S;
vector <int>G[MOD];
int cauta( int x )
{
int k = x % MOD;
vector < int >:: iterator i;
for( i = G[k].begin() ; i!=G[k].end() ; ++i )
if( *i == x )
return 1;
return 0;
}
void add( int x )
{
int k = x % MOD;
if( !cauta(x) )
G[k].pb(x);
}
int main()
{
ifstream in("loto.in");
int i , j , k , s;
in >> n >> S;
for( i = 1; i<=n ; i++)
in >> v[i];
sort( v + 1 , v + n + 1 );
for( i = 1; i<=n ; i++)
for( j = i ; j<=n ; j++)
for( k = j ; k <=n ; k++)
{
int p = 0;
p = v[i] + v[j] + v[k];
add(p);
}
for( i = 1 ; i<=n ; i++)
for( j = i ; j<=n ; j++)
for( k = j ; k<=n ; k++)
{
s = S - v[i] - v[j] - v[k];
if( s>=0 )
if( cauta(s))
{
for( int x = 1 ; x<=n ; x++)
for( int y = x ; y <=n ; y++)
for( int z = y ; z<=n ; z++)
if( v[x] + v[y] + v[z] == s )
{
out << v[i] << " " << v[j] << " " << v[k] <<" " << v[x] << " " << v[y] << " " << v[z];
exit(0);
}
}
}
out << -1;
return 0;
}