Pagini recente » Cod sursa (job #1278450) | Cod sursa (job #1036911) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1305831)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <cstring>
#define DIM 105
#define DIM1 666013
using namespace std;
int n , v[DIM];
long long S;
vector <int>G[DIM1];
ifstream fin("loto.in");
ofstream fout("loto.out");
int s;
int _search( int x )
{
int k = x % DIM1;
vector<int>:: iterator it;
for( it = G[k].begin() ; it !=G[k].end() ; ++it )
if( *it == x )
return 1;
return 0;
}
void add( int x )
{
int k = x % DIM1;
if( !_search(x) )
G[k].push_back(x);
}
int main()
{
fin >> n >> S;
for( int i = 1; i<=n ; i++)
fin >> v[i];
sort( v + 1 , v + n + 1 );
for( int i = 1; i <= n ; i++)
for( int j = i ; j <= n ; j++)
for( int k = j ; k <= n ; k++)
{
int p = 0;
p = v[i] + v[j] + v[k];
add(p);
}
for( int i = 1 ; i <= n ; i++)
for( int j = i ; j <= n ; j++)
for( int k = j ; k <= n ; k++)
{
s = S - v[i] - v[j] - v[k];
if( s >= 0 )
if( _search(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 )
{
fout << v[i] << " " << v[j] << " " << v[k] <<" " << v[x] << " " << v[y] << " " << v[z];
}
exit(0);
}
}
fout << -1;
return 0;
}