Cod sursa(job #3196648)

Utilizator Dani111Gheorghe Daniel Dani111 Data 24 ianuarie 2024 14:39:52
Problema Loto Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 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 = 1; j <= N; j++) {
            for(int l = 1; 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 = 1; j <= N && da1; j++) {
            if(v[i] + v[j] > S) da1 = 0;
            bool da = 1;
            for(int l = 1; 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;
}