Cod sursa(job #2895395)

Utilizator CosminaBuruianaCosmina Buruiana CosminaBuruiana Data 29 aprilie 2022 01:19:07
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <unordered_map>

using namespace std;

unordered_map<long long, pair<pair<int, int>, int>> strct;

int main()
{
    ifstream f("loto.in");
    ofstream g("loto.out");
    int i,j,ok=0,k,a[105];
    long long int n,s1,s=0,diferenta=0;
    f>>n>>s;
    for(i=0;i<n;i++)
        f>>a[i];

    for(i=0;i<n;i++)
    {
        for(j=i;j<n;j++)
        {
            for(k=j;k<n;k++)
            {
                //calculam toate sumele de cate 3 elemente si le introducem in hash
                s1=a[i]+a[j]+a[k];
                strct[s1]=make_pair(make_pair(i, j),k);
            }
        }
    }
    //verificam  daca mai exista o alta suma formata din 3 elemente pe care o putem aduna la suma curenta pentru a ajunge la s
    for(i=0;i<n;i++)
    {
        for(j=i;j<n;j++)
        {
            for(k=j;k<n;k++)
            {
                diferenta=s-(a[i]+a[j]+a[k]);
                if(strct.find(diferenta)!=strct.end())
                {
                    g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<a[strct[diferenta].first.first]<<" "<<a[strct[diferenta].first.second]<<" "<<a[strct[diferenta].second];
                    ok=1;
                    break;

                }
                if(ok==1)
                    break;
            }
            if(ok==1)
                break;
        }
        if(ok==1)
            break;
    }
    if(ok==0)
    {
         g<<"-1";
    }


    return 0;
}