Pagini recente » Cod sursa (job #3133257) | Cod sursa (job #2923161) | Cod sursa (job #1460413) | Cod sursa (job #1667328) | Cod sursa (job #2745517)
#include <bits/stdc++.h>
#define prim 700001
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
//unordered_map<int, pair<int, int> >h;
struct T {int unu, doi, trei;};
vector<T> h[prim];
vector<int> a;
int n, s;
void Citire()
{
int i, x;
fin >> n >> s;
for(i = 1; i <= n; i++)
{
fin >> x;
a.push_back(x);
}
}
void Rezolvare()
{
int i, j, k, suma, s1, s2, s3, s4, s5, s6;
// toate sumele de cate 3 elemente
for(i = 0; i < (int)a.size(); i++)
for(j = 0; j < (int)a.size(); j++)
for(k = 0; k < (int)a.size(); k++)
{
suma = a[i] + a[j] + a[k];
h[suma % prim].push_back(T{a[i], a[j], a[k]});
}
for(i = 0; i < prim; i++)
if(!h[i].empty())
for(auto j : h[i])
{
// caut (s - suma din cele 3 elemente)
suma = s - j.unu - j.doi - j.trei;
// caut in hash
if(!h[suma % prim].empty())
{
s1 = j.unu;
s2 = j.doi;
s3 = j.trei;
s4 = h[suma % prim][0].unu;
s5 = h[suma % prim][0].doi;
s6 = h[suma % prim][0].trei;
fout << s1 << " " << s2 << " " << s3 << " " << s4 << " " << s5 << " " << s6 << "\n";
return;
}
}
fout << -1;
}
int main()
{
Citire();
Rezolvare();
fin.close();
fout.close();
return 0;
}