Cod sursa(job #21906)
#include<stdio.h>
#include<stdlib.h>
#define maxn 101
struct blabla{long val,x1,x2,x3;};
blabla sol[maxn*maxn*maxn];
long n,s;
int sort(const void *a,const void *b)
{
blabla c = *( blabla *) a;
blabla d = *( blabla *) b;
return c.val-d.val;
}
void afisare(long i,long j)
{
printf("%ld %ld %ld %ld %ld %ld\n",sol[i].x1,sol[i].x2,sol[i].x3,sol[j].x1,sol[j].x2,sol[j].x3);
}
int main()
{
freopen("loto.in","rt",stdin);
freopen("loto.out","wt",stdout);
long i,j,l,v[maxn],t;
scanf("%ld%ld",&n,&s);
for(i=1;i<=n;i++)
scanf("%ld",&v[i]);
long nr=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(l=1;l<=n;l++)
{
sol[nr].val=v[i]+v[j]+v[l];
sol[nr].x1=i;
sol[nr].x2=j;
sol[nr++].x3=l;
}
qsort(sol,nr,sizeof(sol[0]),sort);
t=nr-1;
for(i=0;i<nr && t>=0 ;i++)
{
if(sol[i].val+sol[t].val==s) {afisare(i,t);return 0;}
while(sol[i].val+sol[t].val>s && t>=0) t--;
}
printf("-1\n");
return 0;
}