Cod sursa(job #3129827)

Utilizator CiprianHutanuHutanu Ciprian CiprianHutanu Data 15 mai 2023 22:08:29
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <unordered_map>

std::ifstream in;
std::ofstream out;


int main() {
    std::unordered_map<int, std::vector<int>> mp;
    int n, S, i, j, k, l, v[105];
    bool f = false;
    std::priority_queue< int, std::vector<int>, std::greater<int> >rez;

    in.open("loto.in");

    in>>n>>S;
    for(i = 0; i < n; i++)
        in>>v[i];
    in.close();

    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            for(k = 0; k < n; k++)
                if (mp.find(v[i] + v[j] + v[k]) == mp.end()) {
                    mp[v[i] + v[j] + v[k]].push_back(v[i]);
                    mp[v[i] + v[j] + v[k]].push_back(v[j]);
                    mp[v[i] + v[j] + v[k]].push_back(v[k]);
                }


    for(i = 0; i < n and !f; i++)
        for(j = 0; j < n and !f; j++)
            for(k = 0; k < n and !f; k++)
            {
                int sum = S-(v[i]+v[j]+v[k]);
                if(mp.find(sum) != mp.end()){
                    rez.push(v[i]);
                    rez.push(v[j]);
                    rez.push(v[k]);
                    for(l = 0; l < 3; l++)
                        rez.push(mp.find(sum)->second[l]);
                    f = true;
                }
            }

    out.open("loto.out");

    if(rez.empty()){
        out<<-1;
    }
    while(!rez.empty()) {
        out << rez.top() << ' ';
        rez.pop();
    }
    out.close();

    return 0;
}