Cod sursa(job #1316205)

Utilizator obidanDan Ganea obidan Data 13 ianuarie 2015 17:14:39
Problema Loto Scor 0
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.47 kb
#include <iostream>
#include <unordered_set>
using namespace std;

const int NMax = 102;

int nr[NMax];

unordered_set<int> myhash;

int main()
{
    int n,s,i,j,k;
    int stemp=0;
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d %d",&n,&s);
    for(i=1;i<=n;i++)
        scanf("%d",&nr[i]);

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            for(k=1;k<=n;k++)
            {
                stemp = nr[i] + nr[j] + nr[k];
                if(myhash.find(stemp) != myhash.end())
                    myhash.insert(stemp);
            }
        }
    }

    bool g = 0;

    for(i=1;(i<=n) && !g; i++)
    {
        for(j=1;(j<=n) && !g;j++)
        {
            for(k=1;(k<=n) && !g;k++)
            {
                if(myhash.find(s-(nr[i]+nr[j]+nr[k])) != myhash.end() )
                {
                    g = 1;
                    stemp =s - (nr[i] + nr[j] + nr[k]);
                    printf("%d %d %d ",nr[i],nr[j],nr[k]);
                }
            }
        }
    }

    if(!g) printf("-1");
    else
    {
        g=0;
        for(i=1;(i<=n) && !g;i++)
        {
            for(j=1;(j<=n) && !g;j++)
            {
                for(k=1;(k<=n) && !g;k++)
                {
                    if(nr[i]+nr[j]+nr[k] == stemp)
                    {
                        printf("%d %d %d",nr[i],nr[j],nr[k]);
                        g=1;
                    }
                }
            }
        }
    }
    return 0;
}