Pagini recente » Cod sursa (job #3216341) | Cod sursa (job #815515) | Cod sursa (job #2769321) | Cod sursa (job #2896588) | Cod sursa (job #179779)
Cod sursa(job #179779)
#include <stdio.h>
int n,s,a[100],nr=0;
struct element
{
int a,b,c,s;
};
element sum[200000];
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-1);
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,val,c,b,m;
for (i=0;i<n;i++)
scanf("%d ",&a[i]);
for (i=0;i<n;i++)
for (j=i;j<n;j++)
for (k=j;k<n;k++)
if (a[i]+a[j]+a[k]<s)
{
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);
for (i=0;i<=nr;i++)
{
val=s-sum[i].s;
c=i;
b=nr-1;
while (c<=b)
{
m=(c+b)/2;
if (sum[m].s==val)
{
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);
return 0;
}
else
if (val>sum[m].s)
c=m+1;
else
b=m-1;
}
}
printf("-1\n");
return 0;
}