Pagini recente » Cod sursa (job #637965) | Cod sursa (job #2824419) | Cod sursa (job #2343529) | Cod sursa (job #1258017) | Cod sursa (job #179222)
Cod sursa(job #179222)
#include <stdio.h>
int n,s,a[100],nr=0;
struct element
{
int a,b,c,s;
};
element sum[1000000];
void qsort(int li,int ls)
{
if (ls-li>1)
{
int i=li,j=ls,i1=0,j1=-1;
while (i<j)
{
if (sum[i].s>sum[j].s)
{
element aux=sum[i];
sum[i]=sum[j];
sum[j]=aux;
int a2=i1;
i1=-j1;
j1=-a2;
}
i+=i1;
j+=j1;
}
qsort(li,i);
qsort(i+1,ls);
}
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d\n",&n,&s);
int i,j,k;
for (i=0;i<n;i++)
scanf("%d ",&a[i]);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
for (k=0;k<n;k++)
{
sum[nr].a=a[i];
sum[nr].b=a[j];
sum[nr].c=a[k];
sum[nr].s=a[i]+a[j]+a[k];
nr++;
}
qsort(0,nr-1);
int ok=0,s2;
for (i=0;!ok&&sum[i].s<=s/2&&i<nr;i++)
{
s2=s-sum[i].s;
int li=0,ls=nr-1,m;
while (li<=ls)
{
m=(li+ls)/2;
if (s2==sum[m].s)
{
ok=1;
printf("%d %d %d %d %d %d\n",sum[i].a,sum[i].b,sum[i].c,sum[m].a,sum[m].b,sum[m].c);
break;
}
else
if (sum[m].s<s2)
{
li=m+1;
m=(li+ls)/2;
}
else
{
ls=m-1;
m=(li+ls)/2;
}
}
}
if (!ok)
printf("-1\n");
return 0;
}