Cod sursa(job #2745284)

Utilizator gabrielanideleaNidelea Gabriela-Andreea gabrielanidelea Data 26 aprilie 2021 12:10:13
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.7 kb
#include<iostream>
#include<fstream>
#include<unordered_map>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct valori
{
    int a, b, c;
};
bool ok = 0;
int N, S, v[101], suma;
unordered_map <int, valori> h;
int main()
{
    valori t; // cream o alta variabila de tip valori, t
    f>>N>>S;//citim cate nr avem si suma aleasa de Gigel
    for(int i = 0; i < N; i++)
    {
        f>>v[i]; // citim nr de pe urmatoarea linie si le introducem in vectorul v
    }
    for(int i = 0; i < N; i++)
    {
        for(int j = i; j < N; j++)
        {
            for(int k = j; k < N; k++)
            {
                suma = v[i] + v[j] + v[k]; // cream toate combinatiile pentru suma a numerelor
                if(S > suma)  //daca S depaseste suma obtinuta de noi prin combinatii
                {
                    t.a = v[i]; // introducem valorile numerelor in @tuplul@ creat
                    t.b = v[j];
                    t.c = v[k];
                    h[suma] = t; // introd in map valorile din tuplu
                }
                if((S > suma) && (h.find(S - suma) != h.end()))  // daca suma noastra este mai mica decat S-ul lui Gigel, dar putem sa atingem S-ul cu elementele din map
                {
                    g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";// afisam valorile
                    g<<h[S-suma].a<<" "<<h[S-suma].b<<" "<<h[S-suma].c;// afisam completarea de valori gasite in map
                    ok = 1; // pb are solutie
                    i=N+5; // iesim din for
                    j=N+5;
                    k=N+5;
                }
            }
        }
    }
    if(ok==0)
    {
        g<<"-1";
    }
    return 0;
}