Cod sursa(job #61263)
#include<stdio.h>
long v[1000],n;
long x,i,k,p,j,s,a[1000],ii,jj,m,iii[1000],jjj[1000],kk[1000];
void bubble()
{
int i;
long ok,aux;
do
{
ok=1;
for(i=1;i<p;++i)
if(v[i]>v[i+1])
{
aux=v[i]; v[i]=v[i+1]; v[i+1]=aux;
aux=iii[i]; iii[i]=iii[i+1]; iii[i+1]=aux;
aux=jjj[i]; jjj[i]=jjj[i+1]; jjj[i+1]=aux;
aux=kk[i]; kk[i]=kk[i+1]; kk[i+1]=aux;
ok=0;
}
}
while(ok==0);
}
int main()
{
FILE*f=fopen("loto.in","r");
FILE*g=fopen("loto.out","w");
fscanf(f,"%ld %ld",&n,&s);
for (i=1;i<=n;i++) fscanf(f,"%ld",&a[i]);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
for(k=1;k<=n;++k)
{
v[++p]=a[i]+a[j]+a[k];
iii[p]=i;
jjj[p]=j;
kk[p]=k;
}
bubble();
for(i=1;i<=p;++i)
{
x=v[i];
ii=i; jj=p;
while(ii<=jj)
{
m=(ii+jj)/2;
if(v[m]==s-x) { fprintf(g,"%ld %ld %ld %ld %ld %ld",iii[m],iii[i],jjj[m],jjj[i],kk[m],kk[i]); return 0;}
else
if(v[m]>s-x) jj=m-1;
else ii=m+1;
}
}
fprintf(g,"-1");
fclose(f);
fclose(g);
return 0;}