Cod sursa(job #3197339)

Utilizator Dani111Gheorghe Daniel Dani111 Data 26 ianuarie 2024 16:09:31
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
const int MAX = 100;
int v[MAX + 3];

struct trei {
    int x, y, z;
};

map<int, trei>m1;

int N, S;


int main() {
    freopen("loto.in", "r", stdin);
    freopen("loto.out", "w", stdout);
    cin.tie(0);
    ios_base::sync_with_stdio(false);
    cout.tie(0);

    cin >> N >> S;

    for (int i = 1; i <= N; i++) {
        cin >> v[i];
    }

    for (int i = 1; i <= N; i++) {
        for (int j = i; j <= N; j++) {
            for (int l = j; l <= N; l++) {
                if (v[i] + v[j] + v[l] <= S)
                    m1[v[i] + v[j] + v[l]] = { v[i], v[j], v[l] };
            }
        }
    }

    sort(v + 1, v + N + 1);

    for (int i = 1; i <= N; i++) {
        bool da1 = 1;
        for (int j = i; j <= N && da1; j++) {
            if (v[i] + v[j] > S) da1 = 0;
            bool da = 1;
            for (int l = j; l <= N && da && da1; l++) {
                int sum = S - (v[i] + v[j] + v[l]);
                if (sum < 0) da = 0;
                trei aux = m1[sum];

                if (aux.x + aux.y + aux.z == sum) {
                    cout << v[i] << ' ' << v[j] << ' ' << v[l] << ' ' <<
                        aux.x << ' ' << aux.y << ' ' << aux.z;
                    return 0;
                }

            }
        }
    }
    cout << -1;
}