Pagini recente » Istoria paginii utilizator/arrowbasse | Monitorul de evaluare | Autentificare | Cod sursa (job #1322969) | Cod sursa (job #164953)
Cod sursa(job #164953)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm.h>
using namespace std
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,t,p;
int x[1000010];
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);
sort(x+1,x+nrx+1);
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;
}