Cod sursa(job #2315519)

Utilizator NoemikulcsarKulcsar Noemi Noemikulcsar Data 10 ianuarie 2019 10:18:23
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

struct numar
{
    int val;
    int i;
    int j;
    int k;
};

bool cmp (numar A, numar B)
{
    return A.val < B.val;
}

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

    vector<numar> 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], val[i], val[j], val[k]});

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

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

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

        while (st <= dr)
        {
            int mij = (st + dr) / 2;
            if (v[mij].val == dif)
            {
                out << v[i].i << ' ' << v[i].j << ' ' << v[i].k << ' ' << v[mij].i << ' ' << v[mij].j << ' ' << v[mij].k;
                return 0;
            }

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

    out << -1;
    return 0;
}