Pagini recente » Profil SpiriFlaviu | Cod sursa (job #1122753) | Profil SpiriFlaviu | Istoria paginii runda/shumenichb2013 | Cod sursa (job #1294876)
#include <cstdio>
#include <vector>
using namespace std;
const int NMAX = 110, MOD = 666013;
int N, V[NMAX], S;
vector<int> Hash[MOD];
void Insert(int X)
{
int Key = X % MOD;
for(vector<int> :: iterator it = Hash[Key].begin(); it != Hash[Key].end(); ++ it)
if(*it == X)
return ;
Hash[Key].push_back(X);
}
bool Check(int X)
{
if(X < 0) return 0;
int Key = X % MOD;
for(vector<int> :: iterator it = Hash[Key].begin(); it != Hash[Key].end(); ++ it)
if(*it == X)
return 1;
return 0;
}
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%i %i", &N, &S);
for(int i = 1; i <= N; ++ i)
scanf("%i", &V[i]);
for(int i = 1; i <= N; ++ i)
for(int j = 1; j <= N; ++ j)
for(int k = 1; k <= N; ++ k)
Insert(V[i] + V[j] + V[k]);
for(int i = 1; i <= N; ++ i)
for(int j = 1; j <= N; ++ j)
for(int k = 1; k <= N; ++ k)
{
int CurrentSum = V[i] + V[j] + V[k];
if(Check(S - CurrentSum))
{
for(int ii = 1; ii <= N; ++ ii)
for(int jj = 1; jj <= N; ++ jj)
for(int kk = 1; kk <= N; ++ kk)
if(V[i] + V[j] + V[k] + V[ii] + V[jj] + V[kk] == S)
{
printf("%i %i %i %i %i %i\n", V[i], V[j], V[k], V[ii], V[jj], V[kk]);
return 0;
}
}
}
printf("-1\n");
}