Cod sursa(job #1035629)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 18 noiembrie 2013 18:26:16
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <vector>
#include <ext/hash_set>
#include <fstream>
#include <cstdio>

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

__gnu_cxx::hash_set <int> H;
int n,S,aux[101];
vector <int> sol;

int main()
{
    int i,j,k,s;
    long S;
    f>>n>>S;
    for (i=1;i<=n;i++)
        f>>aux[i];
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
           for (k=1;k<=n;k++)
           {
               s=aux[i]+aux[j]+aux[k];
               if (s<S)
                H.insert(s);
           }
    s=-1;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
           for (k=1;k<=n;k++)
    {
        s=aux[i]+aux[j]+aux[k];
        if (H.find(S-s)!=H.end())
        {
            sol.push_back(aux[i]);
            sol.push_back(aux[j]);
            sol.push_back(aux[k]);
            S-=s;
            i=j=k=n+1;
        }
    }
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            for (k=1;k<=n;k++)
    {
        s=aux[i]+aux[j]+aux[k];
        if (S==s)
           {
            g<<aux[i]<<' '<<aux[j]<<' '<<aux[k];
            for (vector<int>::iterator it=sol.begin();it!=sol.end();++it)
                g<<*it<<' ';f.close();g.close();
                return 0;
           }
    }
    g<<-1;
    f.close();g.close();
    return 0;


    }