Pagini recente » Cod sursa (job #2936376) | Cod sursa (job #1087981) | Cod sursa (job #2813016) | Cod sursa (job #675570) | Cod sursa (job #1082152)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f,*g;
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 1;
return 0;
}
int main ()
{
f=fopen("loto.in","r");
g=fopen("loto.out","w");
fscanf(f,"%d%d",&n,&s);
for (i = 1; i <= n; i++)
fscanf(f,"%d",&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 && k == 0)
{
m = (st + dr) / 2;
if(t[m].s == caut)
{
fprintf(g,"%d %d %d %d %d %d",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)
st = m + 1;
else
dr = m - 1;
}
}
}
if (k == 0) fprintf(g,"-1");
fclose(f);
fclose(g);
return 0;
}