Pagini recente » Cod sursa (job #509636) | Cod sursa (job #2916449) | Cod sursa (job #2033031) | Cod sursa (job #3216854) | Cod sursa (job #1077658)
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
ifstream f ("loto.in");
ofstream g("loto.out");
struct suma
{
int s;
int a,b,c;
};
int v[105],i,j,s,n,k,x,nr,st,dr,m,caut;
suma t[1000005];
int cmp (suma x, suma y)
{
if (x.s > y.s)
return x.s;
else
return y.s;
}
int main ()
{
f >> n >> s;
for (i = 1; i <= n; i++)
f >> v[i];
for (i = 1; i <= n; i++)
for (j = i; j<= n; j++)
for (k = j; k <= n; k++)
{
t[++nr].s = v[i] + v[j] + v[k];
t[nr].a = v[i];
t[nr].b = v[j];
t[nr].c = v[k];
}
sort (t + 1, t + nr + 1, cmp);
k = 0;
for (i = 1; i <= nr && k == 0; i++)
{
caut = s - t[i].s;
st = 1;
dr = nr;
while(st <= dr)
{
m = (st + dr) / 2;
if(t[m].s == caut)
{
g << t[m].a << " " << t[m].b << " " << t[m].c << " " << t[i].a << " " << t[i].b << " " << t[i].c;
k = 1;
break;
}
else
{
if(t[m].s > caut)
dr = m-1;
else
st = m;
}
}
}
if (k == 0) g << "-1";
f.close();
g.close();
return 0;
}