Cod sursa(job #2696920)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 17 ianuarie 2021 12:05:59
Problema Loto Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>

using namespace std;

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

struct punct {
    int sum, a, b, c;
};

vector <int> V;
vector <punct> A;

bool cmp(punct x, punct y) {
    return x.sum < y.sum;
}

int cautBin(int x) {
    int left = -1, right = A.size();
    while (right - left > 1) {
        int mid = (left + right) >> 1;
        if (A[mid].sum < x) {
            left = mid;
        } else {
            right = mid;
        }
    }
    if (right == A.size() || A[right].sum != x) {
        return -1;
    } else {
        return right;
    }
}

int main() {
    int n, S;

    fin >> n >> S;
    for (int x, i = 0; i < n; ++i) {
        fin >> x;
        V.push_back(x);
    }

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            for (int k = 0; k < n; ++k) {
                int sum = V[i] + V[j] + V[k];
                A.push_back({sum, V[i], V[j], V[k]});
            }
        }
    }

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

    for (int i = 0; i < A.size(); ++i) {
        int sum = A[i].sum;
        int poz = cautBin(S - sum);
        if (poz != -1) {
            fout << A[i].a << ' ' << A[i].b << ' ' << A[i].c << ' ' << A[poz].a << ' ' << A[poz].b << ' ' << A[poz].c << '\n';
            return 0;
        }
    }

    fout << -1 << '\n';

    return 0;
}