Pagini recente » Cod sursa (job #534158) | Cod sursa (job #3261653) | Cod sursa (job #2086339) | Cod sursa (job #1857743) | Cod sursa (job #2588879)
#include <bits/stdc++.h>
using namespace std;
#define N 105
#define K 1000009
int n, S, v[N], val[N*N*N], urm[N*N*N], nr;
int lst[K+5];
void add(int x) {
val[++nr] = x;
urm[nr] = lst[x % K];
lst[x % K] = nr;
}
bool exist(int x) {
for(int p = lst[x%K]; p; p = urm[p])
if(x == val[p]) return true;
return false;
}
int main() {
ifstream fin("loto.in");
ofstream fout("loto.out");
fin >> n >> S;
for(int i = 1; i <= n; ++i)
fin >> v[i];
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
for(int k = 1; k <= n; ++k)
add(v[i]+v[j]+v[k]);
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
for(int k = 1; k <= n; ++k)
if(exist(S - (v[i]+v[j]+v[k]))) {
S -= (v[i]+v[j]+v[k]);
fout << v[i] << ' ' << v[j] << ' ' << v[k] << ' ';
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
for(int k = 1; k <= n; ++k)
if(v[i]+v[j]+v[k] == S) {
fout << v[i] << ' ' << v[j] << ' ' << v[k];
return 0;
}
}
fout << "-1";
return 0;
}