Cod sursa(job #2743293)

Utilizator MadalinaKopaczMadalina Kopacz MadalinaKopacz Data 22 aprilie 2021 19:42:36
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");


struct num {int a, b, c;};        ///triplete din care obtinem jumatate de suma
unordered_map<int, num> sum;      ///dict de forma suma: triplete cu care obt suma
int v[105];   ///numerele avute la dispozitie

int main()
{
    int N, S;
    fin >> N >> S;
    for (int i = 0; i < N; ++i) fin >> v[i];      
    for (int i = 0; i < N; ++i) 
    {
        for (int j = i; j < N; ++j)    ///numerele se pot repeta (de aceea incepem de la i)
        {
            for (int k = j; k < N; ++k) 
            {
                num n;
                n.a = v[i], n.b = v[j], n.c = v[k];    ///un triplet
                int s = n.a + n.b + n.c;   ///jumatatea obt din triplet
                sum[s] = n;
                if (sum.find(S - s) != sum.end())    ///cautam daca avem complement pentru suma data 
                {
                    fout << sum[s].a << ' ' << sum[s].b << ' ' << sum[s].c << ' ';   ///afisam tripletele sumei curente
                    fout << sum[S - s].a << ' ' << sum[S - s].b << ' ' << sum[S - s].c;  ///afisam tripletele sumei complementare
                    return 0;
                }
            }
        }
    }
    fout << -1;   ///nu am gasit suma
    return 0;
}