Pagini recente » Cod sursa (job #882980) | Cod sursa (job #1759252) | Cod sursa (job #1741669) | Cod sursa (job #434917) | Cod sursa (job #2439120)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int n, z;
long long s, v[107];
bitset <300000001> fr;
struct triplet
{
long long nr1, nr2, nr3, suma;
}sum[1000007];
void Read()
{
fin >> n >> s;
for (int i = 1; i <= n; ++i)
{
fin >> v[i];
}
for (int i = 1; i <= n; ++i)
{
for (int j = i; j <= n; ++j)
{
for (int k = j; k <= n; ++k)
{
sum[++z] = {v[i], v[j], v[k], v[i] + v[j] + v[k]};
fr[v[k] + v[i] + v[j]] = 1;
}
}
}
}
void Solve()
{
long long sum1 = -1, sum2 = -1;
for (int i = 1; i <= z; ++i)
{
long long s2 = s - sum[i].suma;
if (s2 <= 300000000 && s2 >= 0)
{
if (fr[s2])
{
sum1 = sum[i].suma;
sum2 = s2;
break;
}
}
}
if (sum2 == -1)
{
fout << -1;
return;
}
long long v[6], c = 0;
for (int i = 1; i <= z; ++i)
{
if (sum[i].suma == sum1)
{
v[c++] = sum[i].nr1;
v[c++] = sum[i].nr2;
v[c++] = sum[i].nr3;
sum1 = -1;
}
if (sum[i].suma == sum2)
{
v[c++] = sum[i].nr1;
v[c++] = sum[i].nr2;
v[c++] = sum[i].nr3;
sum2 = -1;
}
}
sort(v, v + c);
for (int i = 0; i < c; ++i)
{
fout << v[i] << " ";
}
}
int main()
{
Read();
Solve();
fin.close();
fout.close();
return 0;
}