Cod sursa(job #2731186)

Utilizator PopescuMihneaPopescu Mihnea-Valentin PopescuMihnea Data 27 martie 2021 14:41:47
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");

struct suma{
    bool exista=false;
    int i,j,k;
};

int main()
{
    int N,S,i,j,k;
    bool ok=false;
    unordered_map<int,suma> dict;
    f>>N>>S;
    vector <int> v(N);
    for (i=0; i<N; i++)
        f>>v[i];
    for (i=N-1; i>=0; --i)
        for (j=i; j>=0; --j)
            for (k=j; k>=0; --k)
            {
                dict[v[i]+v[j]+v[k]].exista=1;
                dict[v[i]+v[j]+v[k]].i=v[i];
                dict[v[i]+v[j]+v[k]].j=v[j];
                dict[v[i]+v[j]+v[k]].k=v[k];
            }
    for (i=N-1; i>=0 && !ok; --i)
        for (j=i; j>=0 && !ok; --j)
            for (k=j; k>=0 && !ok; --k)
                if (dict[S-v[i]-v[j]-v[k]].exista)
                {
                    ok=1;
                    g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                    g<<dict[S-v[i]-v[j]-v[k]].i<<" "<<dict[S-v[i]-v[j]-v[k]].j<<" "<<dict[S-v[i]-v[j]-v[k]].k;
                }
    if (!ok)
        g<<-1;
}