Pagini recente » Cod sursa (job #2519989) | Cod sursa (job #596969) | Cod sursa (job #2076262) | Cod sursa (job #1101433) | Cod sursa (job #164951)
Cod sursa(job #164951)
#include <stdio.h>
#include <stdlib.h>
int compara(const void *a,const void *b){
return *(int*)a-*(int*)b;
}
int n,v[1310];
void afis(int x){
int i,j,k;
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
for (k=1;k<=n;++k)
if (v[i]+v[j]+v[k]==x){
printf("%d %d %d",v[i],v[j],v[k]);
return;
}
}
int main(){
int nrx=0,i,j,k,s,g,sum,aux,poz1,poz2,t,p;
int x[100010];
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
for (i=1;i<=n;++i)
scanf("%d",&v[i]);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
for (k=1;k<=n;++k)
x[++nrx]=v[i]+v[j]+v[k];
t=nrx;
p=1;
x[0]=0;
qsort(x,nrx+1,sizeof(x[0]),compara);
while (p<=t){
while (x[p]+x[t]>s && t>0)
t--;
if (x[p]+x[t]==s){
afis(x[p]);
printf(" ");
afis(x[t]);
printf("\n");
return 0;
}
if (t<=0)
break;
while (x[p]+x[t]<s&&p<=nrx)
++p;
}
printf("-1\n");
return 0;
}