Cod sursa(job #2221343)

Utilizator andreisontea01Andrei Sontea andreisontea01 Data 13 iulie 2018 20:22:29
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;

const int MAXN = 105;

int num[MAXN], sol[MAXN], coef[MAXN];

int n, s;

void backtrack(int pos){
    if(pos == n + 1){
        int sum = 0, total = 0;
        for(int i = 1;i <= n; ++i){
            sum += sol[i] * num[i];
            total += sol[i];
        }
        if(sum == s && total == 6){
            for(int i = 1; i <= n; ++i)
                coef[i] = sol[i];
        }
        return;
    }
    for(int i = 1; i <= 6; ++i){
        sol[pos] = i;
        backtrack(pos + 1);
        sol[pos] = 0;
    }
    return;
}

int main()
{
    ifstream fin("loto.in");
    ofstream fout("loto.out");
    fin >> n >> s;
    for(int i = 1; i <= n; ++i)
        fin >> num[i];
    sort(num + 1, num + n + 1);
    if(6 * num[n] < s)
        fout << -1;
    else{
        backtrack(1);
        for(int i = 1; i <= n; ++i){
            for(int j = 1; j <= coef[i]; ++j)
                fout << num[i] << " ";
        }
    }
    return 0;
}