Pagini recente » Cod sursa (job #1509916) | Cod sursa (job #262415) | Cod sursa (job #2213333) | Cod sursa (job #286726) | Cod sursa (job #997573)
Cod sursa(job #997573)
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
const int NMAX = 110, MOD = 52919;
int N, S, V[NMAX];
vector<int> Hash[MOD];
void Insert(int Val)
{
for(vector<int> :: iterator it = Hash[Val % MOD].begin(); it != Hash[Val % MOD].end(); ++ it)
if(*it == Val)
return ;
Hash[Val % MOD].push_back(Val);
}
bool Is(int Val)
{
for(vector<int> :: iterator it = Hash[Val % MOD].begin(); it != Hash[Val % MOD].end(); ++ it)
if(*it == Val)
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)
if(Is(S - V[i] - V[j] - V[k]))
for(int l = 1; l <= N; ++ l)
for(int m = 1; m <= N; ++ m)
for(int n = 1; n <= N; ++ n)
if(V[i] + V[j] + V[k] + V[l] + V[m] + V[n] == S)
{
printf("%i %i %i %i %i %i\n", V[i], V[j], V[k], V[l], V[m], V[n]);
return 0;
}
printf("-1");
return 0;
}