Pagini recente » Istoria paginii runda/test_pozitiv/clasament | tp2 | Cod sursa (job #1504111) | Cod sursa (job #1194998) | Cod sursa (job #2747533)
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
struct numere {
int x, y, z;
} nr;
unordered_map <int, numere> hmap;
unordered_map <int, numere> :: iterator itr;
unordered_map <int, numere> :: iterator S2;
int n, s;
vector <int> a;
int main()
{
int S = 0, x;
fin >> n >> s;
for ( int i = 0; i < n; i++ )
{
fin >> x;
a.push_back(x);
}
// sume de cate 3 elemente ( numerele se pot repeta )
for ( int i = 0; i < n; i++ )
for ( int j = i; j < n; j++ )
for ( int k = j; k < n; k++ )
{
S = a[i] + a[j] + a[k];
nr.x = a[i];
nr.y = a[j];
nr.z = a[k];
hmap[S] = nr; // adaugam in map
}
bool ok = 0;
for ( itr = hmap.begin(); itr != hmap.end(); itr++ )
{
// cautam in map un tuplu care sa aiba suma "s - itr->first"
S2 = s - itr->first;
if ( hmap.count(S2) > 0 )
{
// daca am gasit afisam cele 6 elemente
fout << itr->second.x << " " << itr->second.y << " " << itr->second.z << " ";
fout << hmap[S2].x << " " << hmap[S2].y << " " << hmap[S2].z;
ok = 1;
break;
}
}
if ( ok == 0 )
fout << -1;
return 0;
}