Pagini recente » Cod sursa (job #2105885) | Cod sursa (job #2781119) | Cod sursa (job #1962683) | Cod sursa (job #419421) | Cod sursa (job #2747682)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct sum
{
bool ok = false;
int i, j, k;
};
int main()
{
int N, S, i, j, k;
bool ok2 = false;
unordered_map <int, sum> perechi; /// Pentru suma X vom atasa o pereche din care rezulta acea suma
in >> N >> S;
vector <int> nr(N);
for (i = 0; i < N; ++i)
in >> nr[i];
for (i=N-1; i>=0; --i)
for (j=i; j>=0; --j)
for (k=j; k>=0; --k)
{
perechi[nr[i] + nr[j] + nr[k]].i = nr[i];
perechi[nr[i] + nr[j] + nr[k]].j = nr[j];
perechi[nr[i] + nr[j] + nr[k]].k = nr[k];
perechi[nr[i] + nr[j] + nr[k]].ok = 1;
}
for (i=N-1; i>=0 && !ok2; --i)
for (j=i; j>=0 && !ok2; --j)
for (k=j; k>=0 && !ok2; --k)
{
if (perechi[S - nr[i] - nr[j] - nr[k]].ok)
{
out << nr[i] << " " << nr[j] << " " << nr[k] << " ";
out << perechi[S - nr[i] - nr[j] - nr[k]].i << " " << perechi[S - nr[i] - nr[j] - nr[k]].j << " " << perechi[S - nr[i] - nr[j] - nr[k]].k;
ok2 = 1;
}
}
if (!ok2)
out << "-1";
return 0;
}