Pagini recente » Cod sursa (job #1418079) | Cod sursa (job #2009371) | Cod sursa (job #3223003) | Cod sursa (job #2642114) | Cod sursa (job #82813)
Cod sursa(job #82813)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100
int n, s, a[NMAX];
int value[NMAX*NMAX*NMAX], pos[NMAX*NMAX*NMAX], p[NMAX*NMAX*NMAX];
int comp(const void * a, const void * b) {
return value[*(int*)a] - value[*(int*)b];
}
int bcomp(const void * a, const void * b) {
return *(int*)a - value[*(int*)b];
}
int main() {
int i, j, k, l;
int *q;
int key;
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%d %d", &n, &s);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n*n*n; i++)
p[i] = i;
for (i = l = 0; i < n; i++)
for (j = 0; j < n; j++)
for (k = 0; k < n; k++) {
value[l] = a[i] + a[j] + a[k];
pos[l] = i + j*100 + k*10000;
l++;
}
qsort(p, l, sizeof(int), comp);
for (i = 0; i < l; i++) {
key = s - value[p[i]];
if (key > 0) {
q = (int*) bsearch(&key, p, l, sizeof(int), bcomp);
if (q) {
printf("%d %d %d ", a[pos[p[i]]%100], a[(pos[p[i]]/100) % 100], a[(pos[p[i]]/10000) % 100]);
printf("%d %d %d\n", a[pos[*q]%100], a[(pos[*q]/100) % 100], a[(pos[*q]/10000) % 100]);
return 0;
}
}
}
printf("-1\n");
return 0;
}