Pagini recente » Cod sursa (job #193725) | Cod sursa (job #178053) | Cod sursa (job #1763525) | Cod sursa (job #646776) | Cod sursa (job #3130748)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
struct Combinari {
long long suma;
int nr1, nr2, nr3;
bool operator<(const Combinari& obj) const {
return suma < obj.suma;
}
};
int main() {
ifstream in("loto.in");
ofstream out("loto.out");
int n;
long long s;
in >> n >> s;
vector<int> numere(n);
for (int i = 0; i < n; i++) {
in >> numere[i];
}
vector<Combinari> combinari;
// generam toate combinarile posibile de 3 numere
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
for (int t = j; t < n; t++) {
long long suma = numere[i] + numere[j] + numere[t];
combinari.push_back({ suma, i, j, t });
}
}
}
sort(combinari.begin(), combinari.end());
// cautam o combinare care ajunge la suma ceruta
vector<int> bilet;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
for (int t = j; t < n; t++) {
long long sumaRamasa = s - numere[i] - numere[j] - numere[t];
Combinari combinareCeruta = { sumaRamasa, -1, -1, -1 };
bool found = false;
for (const Combinari& combinare : combinari) {
if (combinare.suma == sumaRamasa) {
bilet = { numere[i], numere[j], numere[t], numere[combinare.nr1], numere[combinare.nr2], numere[combinare.nr3] };
found = true;
break;
}
}
if (found) {
break;
}
}
if (!bilet.empty()) {
break;
}
}
if (!bilet.empty()) {
break;
}
}
if (bilet.empty()) {
out << -1;
} else {
for (int i = 0; i < 6; i++) {
out << bilet[i] << " ";
}
}
in.close();
out.close();
return 0;
}