Pagini recente » Cod sursa (job #1570232) | Cod sursa (job #2271714) | Istoria paginii runda/test_competition | Clasament oji_2020_cls10 | Cod sursa (job #2034124)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int n, s, nr, mid, ls, ld;
int v[110], suma[1000010];
void afisare (int x)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= n; k++)
{
if (v[i] + v[j] + v[k] == x)
{
out << v[i] << ' ' << v[j] << ' ' << v[k] << ' ';
return;
}
}
}
}
}
int main()
{
in >> n >> s;
for (int i = 1; i <= n; i++)
in >> v[i];
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= n; k++)
{
nr++;
suma[nr] = v[i] + v[j] + v[k];
}
}
}
sort (suma + 1, suma + nr + 1);
for (int i = 1; i <= nr; i++)
{
ls = i;
ld = nr;
while (ls <= ld)
{
mid = (ls + ld) / 2;
if (suma[i] + suma[mid] == s)
{
afisare(suma[i]);
afisare(suma[mid]);
return 0;
}
else
{
if (suma[i] + suma[mid] < s)
ls = mid + 1;
else
ld = mid - 1;
}
}
}
out << -1;
return 0;
}