Pagini recente » Cod sursa (job #1817973) | Cod sursa (job #2031497) | Cod sursa (job #1371405) | Cod sursa (job #2529109) | Cod sursa (job #2760724)
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
unordered_map <int, pair<pair<int,int>,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
//suma partiala obt cu 3 din 6 numere
int s = a[i] + a[j] + a[k];
//o salvam
map[s].first.first= a[i];
map[s].first.second = a[j];
map[s].second = a[k];
//daca avem triplet care sa completeze suma s pana la S afisam
if (map.find(S - s) != map.end())
{
fout << map[s].first.first << ' ' << map[s].first.second << ' ' << map[s].second << ' ';
fout << map[S - s].first.first << ' ' << map[S - s].first.second << ' ' << map[S - s].second << ' ';
return;
}
}
//nu am gasit suma
fout << -1;
}
int main()
{
Citire();
Rezolvare();
}