Pagini recente » Cod sursa (job #1689295) | Cod sursa (job #2266715) | Cod sursa (job #2944418) | Cod sursa (job #3003226) | Cod sursa (job #1711513)
#include <algorithm>
#include <fstream>
#include <iostream>
#define N 1030301
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n1, n, s, a[101], v[N];
void show(int sum)
{
for(int i = 1; i <= n; ++i)
for(int j = i; j <= n; ++j)
for(int k = j; k <= n; ++k)
{
if(a[i] + a[j] + a[k] == sum)
g << a[i] << ' ' << a[j] << ' ' << a[k] << ' ';
}
}
int main()
{
f >> n >> s;
for(int i = 1; i <= n; ++i)
f >> a[ i ];
for(int i = 1; i <= n; ++i)
for(int j = i; j <= n; ++j)
for(int k = j; k <= n; ++k)
v[ ++n1 ] = a[ i ] + a [ j ] + a[ k ];
sort(v + 1, v + n1 + 1);
bool gasit = false;
for(int i = 1; i <= n1; ++i)
{
int st = 1;
int dr = n1;
int m;
while(st <= dr)
{
m = (st + dr) >> 1;
if(v[m] == s - v[i])
{
gasit = true;
show(v[i]);
show(v[m]);
break;
}
else if(v[m] < s - v[i])
st = m + 1;
else dr = m - 1;
}
if(gasit)
return 0;
}
g << "-1" << '\n';
}