Cod sursa(job #135000)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 12 februarie 2008 19:54:06
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <stdio.h>
#include <algorithm>
#include <set>

using namespace std;

int a[100],n,s,e,r,ok;
set <int> w;

void citire()
{
    freopen("loto.in","r",stdin);
    scanf("%d%d", &n, &s);
    for (int i=0; i<n; i++)
        scanf("%d", &a[i]);
    fclose(stdin);
}

void loto()
{
    for (int i=0; i<n; i++)
        for (int j=i; j<n; j++)
            for (int k=j; k<n; k++)
                w.insert(a[i]+a[j]+a[k]);
    for (int i=0; i<n; i++)
        for (int j=i; j<n; j++)
            for (int k=j; k<n; k++)
            {
                e=a[i]+a[j]+a[k];
                r=s-e;
                if (w.find(r)!=w.end())
                {
                    ok=1;
                    return;
                }
            }
}

int SOL[20];

void solutie(int q)
{
     for(int i=0; i<n; i++)
        for(int j=i; j<n; j++)
            for(int k=j; k<n; k++)
                if(a[i]+a[j]+a[k]==q)
                {
                    SOL[++SOL[0]]=a[i], SOL[++SOL[0]]=a[j];
                    SOL[++SOL[0]]=a[k];
                    return ;
                }

}

void afisare()
{
    freopen("loto.out","w",stdout);
    if (!ok)
        printf("-1");
    else
    {
        solutie(e);
        solutie(r);
        for (int i=1; i<=6; i++)
            printf("%d ",SOL[i]);
    }
    fclose(stdout);
}

int main()
{
    citire();
    loto();
    afisare();
    return 0;
}