Pagini recente » Cod sursa (job #240838) | Cod sursa (job #2138196) | Cod sursa (job #1627935) | Cod sursa (job #1454650) | Cod sursa (job #2786010)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in ("loto.in");
ofstream out ("loto.out") ;
bool cmpsuma (int x, int y) {
return x < y;
};
int main()
{
int n, S, i;
in>> n >> S;
vector<int> v(n + 1, 0);
vector<int> w(n * n * n + 1);
for (i = 1; i <= n; i++)
in>> v[i];
i = 0;
for (int a = 1; a <= n; a ++)
for (int b = 1; b <= n; b ++)
for (int c = 1; c <= n; c ++){
i ++;
w[i] = v[a] + v[b] + v[c];
}
sort(w.begin(), w.end(), cmpsuma);
int ans, d, e, f;
bool ok = 1, k = 1;
for (d = 1; d <= n && ok == 1; d ++)
for (e = 1; e <= n && ok == 1; e ++)
for (f = 1; f <= n && ok == 1; f ++) {
if ((v[d] + v[e] + v[f]) <= S) {
int r = S - ( v[d] + v[e] + v[f]), c1 = 1, c2 = i, m;
while (c2 - c1 > 1) {
m = (c1 + c2) / 2;
if (r <= w[m]) {
c2 = m;
}
else {
c1 = m;
}
}
if (w[c2] == r)
ans = c2;
else
ans = c1;
if (w[ans] == r) {
ok = 0;
}
}
}
for (int a = 1; a <= n && k == 1; a ++)
for (int b = 1; b <= n && k == 1; b ++)
for (int c = 1; c <= n && k == 1; c ++){
if ((v[a] + v[b] + v[c]) == (S - v[d - 1] - v[e - 1] - v[f - 1])) {
k = 0;
out<< v[d - 1] << " " << v[e - 1] << " " << v[f - 1] << " " << v[a] << " " << v[b] << " " << v[c];
}
}
if (k == 1)
out<< -1;
return 0;
}