Cod sursa(job #2869667)

Utilizator Milka69Anastase Luca George Milka69 Data 11 martie 2022 18:59:58
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>
using namespace std;

///-----------------------------------------FILES
ifstream f("combinari.in");
ofstream g("combinari.out");

///-----------------------------------------GLOBAL VARIABLES
#define NMAX 25
int n, k, frq[NMAX], x[NMAX];

///-----------------------------------------READING THE INPUT
void ReadInput()
{
    f >> n >> k;
}

void afisare()
{
    for(int i=1;i<=k;++i)
        g << x[i] << ' ';
    g << '\n';
}

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

bool reach(int p)
{
    return p == k;
}

void backtracking(int s)
{
    for(int i=1;i<=n;++i)
    {
        x[s] = i;
        if(ok(s))
            if(reach(s))
                afisare();
            else
                backtracking(s+1);
    }
}

///-----------------------------------------SOLUTION
void Solution()
{
    backtracking(1);
}

///-----------------------------------------MAIN
int main()
{
    ReadInput();
    Solution();
}