Cod sursa(job #2747639)

Utilizator monicaandreea46Girbea Monica monicaandreea46 Data 29 aprilie 2021 15:15:51
Problema Loto Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
std::ifstream f("loto.in");
std::ofstream g("loto.out");

int n, sum;
//map cu suma de 3 posibila si pozitiile celor 3 in vector
std::unordered_map<int, std::tuple<int, int, int> > sume;
std::vector<int> v;

int main() {
    f>>n>>sum;

    for( int i=0 ; i<n ; i++)
    {
        int x;
        f>>x;
        v.push_back(x);
    }

    for(int i=0 ; i<n ; i++ )
        for(int j=0 ; j<n ; j++ )
            for(int k=0 ; k<n ; k++ ){
                sume[v[i] + v[j] + v[k]] = std::make_tuple( i, j, k ); //retinem sumeitiile numerelor
            }

    for( auto x : sume){
        int suma_partiala = x.first;
        if( sume.find(sum - suma_partiala) != sume.end()) //daca se poate obtine restul pana la sum
        {
            int i = std::get<0>(x.second );
            int j = std::get<1>(x.second );
            int k = std::get<2>(x.second );
            int x = std::get<0>(sume[ sum - suma_partiala ]);
            int y = std::get<1>(sume[ sum - suma_partiala ]);
            int z = std::get<2>(sume[ sum - suma_partiala ]);
            g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<v[x]<<" "<<v[y]<<" "<<v[z];
            return 0;
        }
    }

    g<<"-1";
    return 0;
}