Cod sursa(job #2789071)

Utilizator keluIon Ionel kelu Data 26 octombrie 2021 20:47:07
Problema Loto Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <tuple>

using namespace std;

#if TEST
    #include <fstream>
    ifstream cin("test.in");
    ofstream cout("test.out");
#else
    #include <fstream>
    ifstream cin("loto.in");
    ofstream cout("loto.out");
#endif


struct triplet
{
    int a;
    int b;
    int c;
};

int main()
{   
    int n,s;
    
    cin>>n>>s;

    vector<int> a(n);

    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    unordered_map<int,triplet> m;

    m.reserve(n*n*n);
    
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<n;k++)
            {
                int p = a[i] + a[j] + a[k];
                if (p>s) 
                    continue;

                auto it = m.find(s-p);
                if (it!=m.end())
                {
                    triplet v = it->second;                    
                    cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v.a<<" "<<v.b<<" "<<v.c;
                    return 0;
                }
                if (p<=s)
                {
                    m[ p ] = {a[i], a[j], a[k]};
                }
            }
        }
    }

    cout<<"-1"; //not found
    return 0;
}