Cod sursa(job #2740532)

Utilizator cristivasileVasile George-Cristian cristivasile Data 13 aprilie 2021 14:41:52
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <tuple>
#include <unordered_map>

using namespace std;

ifstream f("loto.in");
ofstream g("loto.out");

unordered_map <int, tuple<int, int, int>> dict;     // dictionar in care se retin sumele partiale si numerele care le compun
tuple<int, int, int> aux;                     
int a[100];                                         // array in care se stocheaza numerele date de loterie
int dif;


int main()
{
    int n, S;
    f >> n;
    f >> S;

    for (int i = 0; i < n; i++)
        f >> a[i];

    bool OK = 1;
    for (int i = 0; i < n && OK; i++)
        for (int j = i; j < n && OK; j++)
            for (int k = j; k < n && OK; k++) {
                aux = make_tuple(a[i], a[j], a[k]);
                dict[a[i] + a[j] + a[k]] = aux;      //se stocheaza suma partiala
                dif = S - a[i] - a[j] - a[k];        
                if(dict.count(dif)){                //se cauta diferenta dintre suma totala si suma partiala actuala
                    g << a[i] << " " << a[j] << " " << a[k] << " " << get<0>(dict[dif]) << " " << get<1>(dict[dif]) << " " << get<2>(dict[dif]);
                    OK = 0;
                }
            }

    if (OK == 1)
        g << -1;

    return 0;
}