Cod sursa(job #2174424)

Utilizator tigeraOprea Tereza Emilia tigera Data 16 martie 2018 12:00:29
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("combinari.in");
ofstream fout  ("combinari.out");

int n, k, st[20], ams, ev, i;

int pune_val (int niv)
{
    int ok = 0;
    if (niv <=k && st[niv]<n )
    {
        st[niv]++;
        ok = 1;
    }
    return ok;

}

int validare (int niv)
{
    int ok = 1;
    for (i=1; i<niv; i++)
    {
        if (st[i]>=st[niv])
            ok = 0;
    }
    return ok;
}

int solutie (int niv)
{
    if (niv == k)
        return 1;
    return 0;
}

int tiparire ()
{
    for (i=1; i<=k; i++)
        fout << st[i] << ' ';
    fout << '\n';
}

void backtr ()
{
    int niv = 1;
    while (niv > 0)
    {
        do
        {
            ams = pune_val (niv);
            if (ams == 1)
                ev = validare (niv);
        }
        while (ams == 1 && ev == 0);
        if (ams ==1 && ev == 1)
        {
            if (solutie (niv) == 1)
                tiparire ();
            else
            {
                niv ++;
                st[niv] = st[niv-1];
            }
        }
        else
            niv--;
    }
}

int main()
{
    fin >> n >> k;
    backtr();
}