Cod sursa(job #2464913)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 29 septembrie 2019 09:15:02
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int N = 105;
const int S = 600000005;
bitset<S> can;
int v[N];
int main()
{
    int n,s;
    in >> n >> s;
    for (int i = 1; i<=n; i++)
        in >> v[i];
    for (int i = 1; i<=n; i++)
        for (int j = 1; j<=n; j++)
            for (int k = 1; k<=n; k++)
                can[v[i]+v[j]+v[k]] = 1;
    int nr1,nr2;
    bool ok = 0;
    for (int i = 1; i<=n && !ok; i++)
        for (int j = 1; j<=n && !ok; j++)
            for (int k = 1; k<=n && !ok; k++)
                if (v[i]+v[j]+v[k]<=s && can[s-v[i]-v[j]-v[k]])
                {
                    nr1 = s-v[i]-v[j]-v[k];
                    nr2 = v[i]+v[j]+v[k];
                    ok = 1;
                }
    if (!ok)
    {
        out << -1;
        return 0;
    }
    ok = 0;
    for (int i = 1; i<=n && !ok; i++)
        for (int j = 1; j<=n && !ok; j++)
            for (int k = 1; k<=n && !ok; k++)
                if (v[i]+v[j]+v[k] == nr1)
                {
                    out << v[i] << " " << v[j] << " " << v[k] << " ";
                    ok = 1;
                }
    for (int i = 1; i<=n; i++)
        for (int j = 1; j<=n; j++)
            for (int k = 1; k<=n; k++)
                if (v[i]+v[j]+v[k] == nr2)
                {
                    out << v[i] << " " << v[j] << " " << v[k];
                    return 0;
                }
}