Cod sursa(job #2893585)

Utilizator mihairazvan03Dana Mihai mihairazvan03 Data 26 aprilie 2022 13:02:51
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 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[1000001];

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

int n, suma, i, j, k, v[101], nrSume, gasit;

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++)
            {
                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);

    for(i = 1, j = nrSume; i <= j;)
    {
        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;
            break;
        }
        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;
}