Pagini recente » Cod sursa (job #1247813) | Cod sursa (job #1518231) | Cod sursa (job #3210406) | Cod sursa (job #2131948) | Cod sursa (job #179839)
Cod sursa(job #179839)
#include<stdio.h>
#include<algorithm>
using namespace std;
int val[1001000];
int nr[110],x,sum,n;
void solve(int s){
int i,j,k;
for(i=0;i<n;++i){
for(j=i;j<n;++j){
for(k=j;k<n;++k){
if(nr[i]+nr[j]+nr[k]==s){
printf("%d %d %d",nr[i],nr[j],nr[k]);
return;
}
}
}
}
}
int caut(int i,int u){
int p,mij;
p=0;
while(p!=u){
mij=(p+u)/2;
if(sum<=val[i]+val[mij])
u=mij;
else
p=mij+1;
}
return p;
}
int main(){
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int i,j,k,ok=1;
scanf("%d%d",&n,&sum);
for(i=0;i<n;++i)
scanf("%d",&nr[i]);
x=0;
for(i=0;i<n;++i){
for(j=i;j<n;++j){
for(k=j;k<n;++k){
val[x]=nr[i]+nr[j]+nr[k];
++x;
}
}
}
sort(val,val+x);
for(i=0;i<x && ok;++i){
k=caut(i,x-1);
if(val[i]+val[k]==sum){
solve(val[i]);
printf(" ");
solve(val[k]);
printf("\n");
ok=0;
}
}
if(ok)
printf("-1\n");
fclose(stdin);
fclose(stdout);
return 0;
}