Cod sursa(job #2789061)

Utilizator keluIon Ionel kelu Data 26 octombrie 2021 20:39:28
Problema Loto Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 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);
    
    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)
                {
                    m[ p ] = {a[i], a[j], a[k]};
                }
            }
        }
    }

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<n;k++)
            {
                int diff = s - a[i] - a[j] - a[k];
                if (diff>0 && m.count(diff))
                {
                    triplet v = m[diff];                    
                    cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v.a<<" "<<v.b<<" "<<v.c;
                    return 0;
                }
            }
        }
    }

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