Cod sursa(job #1190639)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 25 mai 2014 15:35:35
Problema Loto Scor 5
Compilator cpp Status done
Runda itmarathon Marime 1.37 kb
#include <cstdio>
#include <set>

using namespace std;

const int NMax = 102, SMax = 600000000;

struct numar
{
    int value, i, j, k;
    numar() {value = i = j = k = 0;}
    numar(const int value, const int i, const int j, const int k)
    {
        this -> value = value;
        this -> i = i;
        this -> j = j;
        this -> k = k;
    }
    bool operator < (const numar & other) const
    {
        return value < other.value;
    }
};
int N, S;
int a[NMax];
set <numar> s;
int nv;

int main()
{
    freopen("loto.in", "r", stdin);
    scanf("%d %d", &N, &S);
    for (int i = 1; i <= N; ++ i)
        scanf("%d", &a[i]);
    for (int i = 1; i <= N; ++ i)
        for (int j = 1; j <= N; ++ j)
            for (int k = 1; k <= N; ++ k)
                s.insert(numar(a[i] + a[j] + a[k], i, j, k));
    for (set <numar> :: iterator it = s.begin(); it != s.end(); ++ it)
    {
        numar aux = *it;
        int ns = S - aux.value;
        set <numar> :: iterator jt = s.lower_bound(numar(ns, 0, 0, 0));
        if (jt != s.end())
        {
            numar aux2 = *jt;
            freopen("loto.out", "w", stdout);
            printf("%d %d %d %d %d %d\n", a[aux.i], a[aux.j], a[aux.k], a[aux2.i], a[aux2.j], a[aux2.k]);
            return 0;
        }
    }
    freopen("loto.out", "w", stdout);
    scanf("-1\n");
    return 0;
}