Pagini recente » Cod sursa (job #21669) | Cod sursa (job #2617551) | Cod sursa (job #873204) | Cod sursa (job #291065) | Cod sursa (job #3129300)
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
unordered_map <int, pair<pair<int, int>, int> > suma3din6;
const int NMAX = 100;
int v[NMAX + 1];
int N, S, s;
int main() {
in >> N >> S;
for (int i = 0; i < N; i++) //citim numerele
in >> v[i];
bool found = 0; // daca am gasit combinatia de numere pt a obtine suma
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
for (int k = 0; k < N; k++){
s = v[i] + v[j] + v[k];
suma3din6[s] = make_pair(make_pair(v[i], v[j]), v[k]); //stocam in map toate combinatiile de 3 numere si suma lor
//verificam daca exista un 3-tuplu in map la care sa adunam cele 3 numere si sa obtinem suma
if (suma3din6.find(S - s) != suma3din6.end()) {
found = 1;
S = S - s;
out << suma3din6[S].first.first << ' ' << suma3din6[S].first.second << ' ' << suma3din6[S].second << ' ';
out << v[i] << ' ' << v[j] << ' ' << v[k];
}
}
}
}
if (!found){
out << -1;
}
in.close();
out.close();
return 0;
}