Cod sursa(job #2739978)

Utilizator andre.anghelacheAndreea Anghelache andre.anghelache Data 10 aprilie 2021 20:35:00
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
#include <tuple>
using namespace std;

int main() {
    ifstream in("loto.in");
    ofstream out("loto.out");

    int n, S, x, i, j, k;
    vector<int> numere;
//    unordered_map<int, vector<int>> myhash;
    unordered_map<int, tuple<int, int, int>> myhash;

    in>>n>>S;

    for(i=0; i<n; i++)
    {
        in>>x;
        numere.push_back(x);
    }

    for(i=0; i<n; i++)
        for(j=i; j<n; j++)
            for(k=j; k<n; k++)
            {
                int suma=numere[i]+numere[j]+numere[k];

                if(suma<=S){
//                    { vector<int> elemente_suma;
//                    elemente_suma.push_back(numere[i]);
//                    elemente_suma.push_back(numere[j]);
//                    elemente_suma.push_back(numere[k]);
//                    myhash[suma] = elemente_suma;

                        myhash[suma]=make_tuple(numere[i], numere[j], numere[j]);
                    }
            }

//    for(auto &elem:myhash)
//    {cout<<elem.first<<" ";
//    for(int i=0; i<elem.second.size(); i++)
//    cout<<elem.second[i]<<" ";
//    cout<<"\n";}

    for(i=0; i<n; i++)
        for(j=i; j<n; j++)
            for(k=j; k<n; k++)
            {
                if(myhash.find(S-numere[i]-numere[j]-numere[k])!=myhash.end())
                {
                    out<<numere[i]<<" "<<numere[j]<<" "<<numere[k]<<" "<<get<0>(myhash[S-numere[i]-numere[j]-numere[k]])<<" "<<get<1>(myhash[S-numere[i]-numere[j]-numere[k]])<<" "<<get<2>(myhash[S-numere[i]-numere[j]-numere[k]]);
                    i=n; j=n; k=n;
                }
            }

    if(i==n)
        out<<-1;

    return 0;
}