Pagini recente » Cod sursa (job #1065071) | Cod sursa (job #334155) | Cod sursa (job #2947992) | Cod sursa (job #1095814) | Cod sursa (job #2740532)
#include <fstream>
#include <tuple>
#include <unordered_map>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
unordered_map <int, tuple<int, int, int>> dict; // dictionar in care se retin sumele partiale si numerele care le compun
tuple<int, int, int> aux;
int a[100]; // array in care se stocheaza numerele date de loterie
int dif;
int main()
{
int n, S;
f >> n;
f >> S;
for (int i = 0; i < n; i++)
f >> a[i];
bool OK = 1;
for (int i = 0; i < n && OK; i++)
for (int j = i; j < n && OK; j++)
for (int k = j; k < n && OK; k++) {
aux = make_tuple(a[i], a[j], a[k]);
dict[a[i] + a[j] + a[k]] = aux; //se stocheaza suma partiala
dif = S - a[i] - a[j] - a[k];
if(dict.count(dif)){ //se cauta diferenta dintre suma totala si suma partiala actuala
g << a[i] << " " << a[j] << " " << a[k] << " " << get<0>(dict[dif]) << " " << get<1>(dict[dif]) << " " << get<2>(dict[dif]);
OK = 0;
}
}
if (OK == 1)
g << -1;
return 0;
}