Pagini recente » Cod sursa (job #1152319) | Cod sursa (job #2999617) | Cod sursa (job #51531) | Cod sursa (job #2045059) | Cod sursa (job #2760716)
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
vector <int> triplet(3);
unordered_map <int, vector < int > > map;
int a[105];
int N, S;
void Citire()
{
fin >> N >> S;
for (int i = 0; i < N; ++i) fin >> a[i];
}
void Rezolvare()
{
//j = i si k = j pt ca numerele nu sunt dist
for (int i = 0; i < N; ++i)
for (int j = i; j < N; ++j)
for (int k = j; k < N; ++k)
{
//un triplet posibil
vector <int> tr(3);
tr[0] = a[i];
tr[1] = a[j];
tr[2] = a[k];
//suma partiala obt cu 3 din 6 numere
int s = tr[0] + tr[1] + tr[2];
//o salvam
map[s] = tr;
//daca avem triplet care sa completeze suma s pana la S afisam
if (map.find(S - s) != map.end())
{
fout << map[s][0] << ' ' << map[s][1] << ' ' << map[s][1] << ' ';
fout << map[S - s][0] << ' ' << map[S - s][1] << ' ' << map[S - s][2];
return;
}
}
//nu am gasit suma
fout << -1;
}
int main()
{
Citire();
Rezolvare();
}