Cod sursa(job #1805245)

Utilizator corvinus2003Corvin Ghita corvinus2003 Data 13 noiembrie 2016 16:16:17
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>
#include <algorithm>

using namespace std;

int v[101], s[1000000];
int main()
{
    ifstream cin ("loto.in");
    ofstream cout ("loto.out");
    int n, sum;
    cin >> n >> sum;
    for (int i = 1; i <= n; ++i)
        cin >> v[i];

    int nr = 1;
    for (int i = 1; i <= n; ++i)
        for (int j = i; j <= n; ++j)
            for (int k = j; k <= n; ++k)
            s[nr++] = v[i] + v[j] + v[k];
    nr--;

    sort(s, s + nr);
    int p, saux, xp, poz;
    for (p = 1; p < nr; p <<= 1);

    for (int i = 1; i <= n; ++i)
        for (int j = i; j <= n; ++j)
            for (int k = j; k <= n; ++k)
            {
                saux = sum - v[i] - v[j] - v[k];
                xp = p;
                for (poz = 0; xp; xp >>= 1)
                    if (poz + xp <= nr && s[poz + xp] <= saux)
                        poz += xp;
                if (s[poz] == saux)
                    for (int i1 = i; i1 <= n; ++i1)
                        for (int j1 = j; j1 <= n; ++j1)
                            for (int k1 = k; k1 <= n; ++k1)
                                if (v[i1] + v[j1] + v[k1] == saux)
                                {
                                    cout << v[i] << " " << v[j] << " " << v[k] << " " << v[i1] << " " << v[j1] << " " << v[k1] << "\n";
                                    return 0;
                                }
            }
    cout << -1 << "\n";
    return 0;
}