Cod sursa(job #3341174)

Utilizator Sabin1133Padurariu Sabin Sabin1133 Data 18 februarie 2026 12:30:21
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>

#define NMAX 18

void combination(char *used, int n, int *comb, int i, int k)
{
    if (i == 0) {
        for (int m = 0; m < n; ++m)
            if (!used[m]) {
                comb[i] = m + 1;
                used[m] = 1;

                combination(used, n, comb, i + 1, k);

                used[m] = 0;
            }
    } else if (i < k) {
        for (int m = comb[i - 1]; m < n; ++m)
            if (!used[m]) {
                comb[i] = m + 1;
                used[m] = 1;

                combination(used, n, comb, i + 1, k);

                used[m] = 0;
            }
    } else {
        for (int j = 0; j < k; ++j)
            std::cout << comb[j] << ' ';
        std::cout << '\n';
    }
}

void print_combinations(int k, int n)
{
    char used[NMAX] = {0};
    int comb[NMAX];

    combination(used, n, comb, 0, k);
}

int main()
{
    int k, n;

    freopen("combinari.in", "r", stdin);
    freopen("combinari.out", "w", stdout);

    std::cin >> n >> k;

    print_combinations(k, n);

    return 0;
}