Cod sursa(job #2260003)

Utilizator papinub2Papa Valentin papinub2 Data 14 octombrie 2018 11:10:39
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream in("loto.in");
ofstream out("loto.out");

void afisare (int x, int&n, vector<int>&val)
{
    for (int i = 1; i <= n; i++)
        for (int j = i; j <= n; j++)
            for (int k = j; k <= n; k++)
                if (val[i] + val[j] + val[k] == x)
            {
                out << val[i] << ' ' << val[j] << ' ' << val[k] << ' ';
                return;
            }
}

int main()
{
    int n, s;
    in >> n >> s;

    vector<int> v;
    vector<int> val(n + 1);

    for (int i = 1; i <= n; i++)
        in >> val[i];

    for (int i = 1; i <= n; i++)
        for (int j = i; j <= n; j++)
            for (int k = j; k <= n; k++)
                v.push_back(val[i] + val[j] + val[k]);

    sort(v.begin(), v.end());

    for (int i = 0; i < v.size(); i++)
    {
        int dif = s - v[i];

        int st = i;
        int dr = v.size() - 1;

        while (st <= dr)
        {
            int mij = (st + dr) / 2;
            if (v[mij] == dif)
            {
                afisare(v[i], n, val);
                afisare(v[mij], n, val);
                return 0;
            }

            if (v[mij] < dif)
                st = mij + 1;
            else
                dr = mij + 1;
        }
    }

    out << -1;
    return 0;
}