Pagini recente » Cod sursa (job #1063471) | Cod sursa (job #395186) | Istoria paginii runda/luca_oji2 | Cod sursa (job #2657900) | Cod sursa (job #2588992)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int N = 107, M = 666019;
int S, v[N], lst[N], urm[N], val[N], nr;
bool apartine(int x)
{
int c = x % M;
for(int p = lst[c]; p != 0; p = urm[p]){
if(val[p] == x){
return true;
}
}
return false;
}
void adauga(int x)
{
int c = x % M;
if(apartine(x)){
return;
}
val[++nr] = x;
urm[nr] = lst[c];
lst[c] = nr;
}
int main()
{
bool ok = 0;
int n, i = 0;
in >> n >> S;
for(int i = 1; i <= n; i++){
in >> v[i];
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= n; k++){
adauga(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(S - (v[i] + v[j] + v[k]) >= 0 && apartine(S - (v[i] + v[j] + v[k]))){
S -= (v[i] + v[j] + v[k]);
out << 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){
out << v[i] << " " << v[j] << " " << v[k];
return 0;
}
}
}
}
}
}
}
}
out << -1;
return 0;
}