Pagini recente » Monitorul de evaluare | Cod sursa (job #678864) | Cod sursa (job #2669764) | Cod sursa (job #2155279) | Cod sursa (job #519625)
Cod sursa(job #519625)
#include <cstdio>
#include <cstdlib>
#define MAXN 101
struct sum {
int val;
int a, b, c;
};
int compare(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], spos, aux, found=0;
int i, j, k;
static sum V[MAXN*MAXN*MAXN];
sum *r;
scanf("%d%d", &N, &S);
for(i=0; i<N; i++)
scanf("%d", loto+i);
spos=0;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
for(k=0; k<N; k++){
V[spos].val=loto[i]+loto[j]+loto[k];
V[spos].a=loto[i]; V[spos].b=loto[j]; V[spos].c=loto[k];
spos++;
}
qsort(V, spos, sizeof(sum), compare);
r=NULL;
for(i=0; i<spos; i++){
aux = S-V[i].val;
r = (sum*)bsearch(&aux, V, spos, sizeof(sum), compare);
if(r!=NULL){
printf("%d %d %d %d %d %d\n", V[i].a, V[i].b, V[i].c, r->a, r->b, r->c);
found=1;
break;
}
}
if(!found)
printf("%d\n", -1);
return 0;
}