Pagini recente » Cod sursa (job #1770583) | Cod sursa (job #2127651) | Cod sursa (job #633221) | Cod sursa (job #2845757) | Cod sursa (job #1180523)
#include <cstdio>
#include <cstdlib>
#define MAXN 101
struct sum {
int val;
int a, b, c;
};
int comp(const void *a, const void *b){
return (((sum*)a)->val-((sum*)b)->val);
}
int main(){
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
int N, S, loto[MAXN], sp, gs=0;
int st, dr, mid, key;
int i, j, k;
static sum V[MAXN*MAXN*MAXN];
scanf("%d%d", &N, &S);
for(i=0; i<N; i++)
scanf("%d", loto+i);
sp=0;
for(i=0; i<N; i++)
for(j=i; j<N; j++)
for(k=j; k<N; k++){
V[sp].val=loto[i]+loto[j]+loto[k];
V[sp].a=loto[i]; V[sp].b=loto[j]; V[sp].c=loto[k];
sp++;
}
qsort(V, sp, sizeof(sum), comp);
for(i=0; i<sp && !gs; i++){
key=S-V[i].val; st=0; dr=sp-1;
while(st <= dr){
mid=((dr-st)>>1)+st;
if(key == V[mid].val){
printf("%d %d %d %d %d %d\n", V[i].a, V[i].b, V[i].c, V[mid].a, V[mid].b, V[mid].c);
gs=1;
break;
} else if(key<V[mid].val){
dr=mid-1;
} else {
st=mid+1;
}
}
}
if(!gs)
printf("%d\n", -1);
return 0;
}