Pagini recente » Monitorul de evaluare | Diferente pentru sandbox intre reviziile 243 si 578 | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3359466)
#include <bits/stdc++.h>
#define MAXN 100
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int v[MAXN + 1];
struct elem{
int x, y, z, s;
};
vector <elem> g;
unordered_map <int, elem> frecv;
vector <elem> gen(int n){
int i, j, k, s;
vector <elem> rez;
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
for(k = 1; k <= n; k++){
s = v[i] + v[j] + v[k];
rez.push_back({v[i], v[j], v[k], s});
frecv[s]= {v[i], v[j], v[k], s};
}
}
}
return rez;
}
int main()
{
int n, suma, i, ok;
fin >> n >> suma;
for(i = 1; i <= n; i++){
fin >> v[i];
}
g = gen(n);
i = ok = 0;
while(i < g.size() && !ok){
if(frecv[suma - g[i].s].s + g[i].s == suma){
ok = 1;
}
i++;
}
i--;
if(!ok){
fout << "-1\n";
}else{
fout << g[i].x << " " << g[i].y << " " << g[i].z << " " << frecv[suma - g[i].s].x << " " << frecv[suma - g[i].s].y << " " << frecv[suma - g[i].s].z << "\n";
}
return 0;
}