Pagini recente » Cod sursa (job #2546257) | Cod sursa (job #2393761) | Cod sursa (job #2424572) | Cod sursa (job #2520311) | Cod sursa (job #1232573)
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 105, MOD = 666013;
struct PartSum {
int s, x, y, z;
PartSum(int ns, int nx, int ny, int nz) {
s = ns;
x = nx;
y = ny;
z = nz;
}
};
int N, S, a[NMAX];
vector<PartSum> hsh[MOD];
ifstream fin("loto.in");
ofstream fout("loto.out");
PartSum Check(int s) {
int crthash = s % MOD;
for (size_t i = 0; i < hsh[crthash].size(); ++i)
if (hsh[crthash][i].s == s)
return hsh[crthash][i];
return PartSum(-1, 0, 0, 0);
}
void Insert(const PartSum &nw) {
if (Check(nw.s).s < 0)
hsh[nw.s % MOD].push_back(nw);
}
int main() {
fin >> N >> S;
for (int i = 0; i < N; ++i)
fin >> a[i];
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
for (int k = 0; k < N; ++k) {
int s = a[i] + a[j] + a[k];
PartSum crt(s, a[i], a[j], a[k]),
cmpl = Check(S - s);
if (cmpl.s >= 0) {
fout << cmpl.x << " "
<< cmpl.y << " "
<< cmpl.z << " "
<< a[i] << " "
<< a[j] << " "
<< a[k] << "\n";
return 0;
}
Insert(crt);
}
fout << "-1\n";
return 0;
}