Cod sursa(job #1693067)

Utilizator msciSergiu Marin msci Data 22 aprilie 2016 12:38:50
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
#include <set>
#include <map>
#include <regex>
#include <queue>
#include <stack>
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <cstring>
#include <cctype>
#include <limits>
#include <functional>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll; typedef unsigned long long ull;

const int N = 1234;

int a[N], n, k;

bool valid(int k) {
    for (int i = 1; i <= k - 1; i++)
        if (a[i] >= a[k]) return false;
    return true;
}

void print() {
    for (int i = 1; i <= k; i++) 
        printf("%d ", a[i]);
    printf("\n");
}

void backtrack(int t) {
    for (int i = 1; i <= n; i++) {
        a[t] = i;
        if (valid(t)) {
            if (t == k) print();
            else backtrack(t + 1);
        }
    }
}

int main() {
#ifdef INFOARENA
    freopen("combinari.in", "r", stdin);
    freopen("combinari.out", "w", stdout);
#endif
    scanf("%d %d", &n, &k);
    backtrack(1);
}