Pagini recente » Cod sursa (job #1539811) | Cod sursa (job #2443628) | Cod sursa (job #2902139) | Cod sursa (job #2676536) | Cod sursa (job #1553475)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int MOD = 666013;
int N, S;
int a[105];
struct cell
{
int s, x, y, z;
};
vector<cell> H[MOD];
bool inHash(int x)
{
int pos = x % MOD;
for (vector<cell>::iterator it = H[x].begin(); it != H[x].end(); ++it)
if (it->s == x) return 1;
return 0;
}
int main()
{
fin >> N >> S;
for (int i = 1; i <= N; ++i)
fin >> a[i];
for (int i = 1; i <= N; ++i)
{
for (int j = 1; j <= N; ++j)
{
for (int k = 1; k <= N; ++k)
{
int sum = a[i] + a[j] + a[k];
if (!inHash(sum))
{
cell elem;
elem.s = sum;
elem.x = i;
elem.y = j;
elem.z = k;
H[sum % MOD].push_back(elem);
}
}
}
}
for (int i = 1; i <= N; ++i)
{
for (int j = 1; j <= N; ++j)
{
for (int k = 1; k <= N; ++k)
{
int sum = S - a[i] - a[j] - a[k];
int x = sum % MOD;
for (vector<cell>::iterator it = H[x].begin(); it != H[x].end(); ++it)
{
if (it->s == sum)
{
fout << a[i] << ' ' << a[j] << ' ' << a[k] << ' ' << it->x << ' ' << it->y << ' ' << it->z;
return 0;
}
}
}
}
}
fout << -1;
return 0;
}