Pagini recente » Cod sursa (job #2475740) | Cod sursa (job #82767) | Cod sursa (job #2824247) | Cod sursa (job #1804232) | Cod sursa (job #1614618)
#include <iostream>
#define MAX 1000005
using namespace std;
int in[100];
int v[MAX];
int how[3][MAX];
int n, s;
void mergeSort (int *v, int n) {
if (n == 1) return;
mergeSort(v, n / 2);
mergeSort(v + n / 2, n - n / 2);
int *aux = new int[n];
int i = 0, j = n / 2, k = 0;
while (i < n / 2 && j < n) {
if (v[i] < v[j]) {
aux[k++] = v[i++];
} else {
aux[k++] = v[j++];
}
}
while (i < n / 2) {
aux[k++] = v[i++];
}
while (j < n) {
aux[k++] = v[j++];
}
for (int i = 0; i < n; ++i) {
v[i] = aux[i];
}
delete[] aux;
}
int search (int *v, int n, int x) {
int l = 0, r = n;
while (r - l > 1) {
int mid = l + (r - l) / 2;
if (v[mid] <= x) {
l = mid;
} else {
r = mid;
}
}
if (v[l] == x) return l;
return -1;
}
int genSum () {
int pos = 0;
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
for (int k = i; k < n; ++k) {
v[pos] = in[i] + in[j] + in[k];
how[0][pos] = in[i];
how[1][pos] = in[j];
how[2][pos] = in[k];
++pos;
}
}
}
return pos;
}
int main (void) {
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
cin >> n >> s;
for (int i = 0; i < n; ++i) {
cin >> in[i];
}
int max = genSum();
mergeSort(v, max);
for (int i = 0; i < max; ++i) {
int l;
l = search(v, max, s - v[i]);
if (l != -1) {
cout << how[0][i] << " " << how[1][i] << " " << how[2][i] << " ";
cout << how[0][l] << " " << how[1][l] << " " << how[2][l];
return 0;
}
}
cout << "-1";
return 0;
}