Cod sursa(job #2777513)

Utilizator andcovAndrei Covaci andcov Data 23 septembrie 2021 16:12:00
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
//
// Created by Andrei Covaci on 03.09.2021.
//

#include <fstream>
#include <iostream>
#include <vector>

#define INPUT "combinari.in"
#define OUTPUT "combinari.out"
//#define INPUT "input.in"
//#define OUTPUT "output.out"

using namespace std;

int n, k;

pair<vector<int>, int> read() {
    ifstream in(INPUT);

    in >> n >> k;
    vector<int> res;
    res.reserve(n + 1);
    for(int i = 0; i <= n; ++i) {
        res.push_back(i);
    }

    in.close();
    return pair<vector<int>, int>(res, 1);
}


ofstream out(OUTPUT);

int solve(pair<vector<int>, int> x) {
    vector<int> v = x.first;
    int pos = x.second;

    for(int i = pos; i <= n; ++i) {
        swap(v[pos], v[i]);

        if (v[pos] < v[pos - 1]) {
            swap(v[i], v[pos]);
            continue;
        }
        if (pos == k) {
            for (int j = 1; j <= k; ++j) {
                out << v[j] << ' ';
            }
            out << '\n';
            swap(v[i], v[pos]);
            continue;
        }

        solve(pair<vector<int>, int>(v, pos + 1));

        swap(v[i], v[pos]);
    }

    return 0;
}

void print(int c) {
    out.close();
}

int main() {
    auto nums = read();
    auto res = solve(nums);
    print(res);

    return 0;
}