Cod sursa(job #2893578)

Utilizator mihairazvan03Dana Mihai mihairazvan03 Data 26 aprilie 2022 12:57:29
Problema Loto Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

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

struct ListaSume
{
    int s, x, y, z;
} lista[1010001];

bool comparaLista(ListaSume a, ListaSume b)
{
    if(a.s > b.s)
        return 0;

    return 1;
}

int n, suma, i, j, k, v[111], nrSume = 0, gasit = 0;

int main()
{
    in>>n>>suma;
    for(i = 1; i <= n; i++)
        in>>v[i];

    for(i = 1; i <= n; i++)      //facem sume de cate 3 numere, pentru ca apoi sa vedem daca gasim alta suma de 3 nr care adunate sa dea s
        for(j = i; j <= n; j++)
            for(k = j; k <= n; k++)
            {
                nrSume++;
                lista[nrSume].s = v[i] + v[j] + v[k];
                lista[nrSume].x = v[i];
                lista[nrSume].y = v[j];
                lista[nrSume].z = v[k];
            }

    sort(lista + 1, lista + nrSume + 1, comparaLista);

    i = 1;
    j = nrSume;
    while(i <= j && gasit == 0)
    {
        if(lista[i].s + lista[j].s == suma)
        {
            out<<lista[i].x<<" "<<lista[i].y<<" "<<lista[i].z<<" "<<lista[j].x<<" "<<lista[j].y<<" "<<lista[j].z;
            gasit = 1;
        }
        else if(lista[i].s + lista[j].s > suma)
            j--;
        else if(lista[i].s + lista[j].s < suma)
            i++;
    }

    if(gasit == 0)
        out<<-1;

    return 0;
}