Cod sursa(job #2747534)

Utilizator atudoreimirunaAtudorei Miruna Gabriela atudoreimiruna Data 29 aprilie 2021 12:50:23
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#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
            }
    int S2;
    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;
}