Cod sursa(job #845643)

Utilizator calin13Calin Nicolau calin13 Data 31 decembrie 2012 11:50:04
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");

short n, k, st[19], niv;
void init()
{
    st[niv] = st[niv-1];
}
bool succesor()
{
    if (st[niv]<n)
    {
        ++st[niv];
        return 1;
    }
    return 0;
}
bool solutie()
{
    return niv>k;
}
void tipar()
{
    for (int i=1; i<=k; i++)
        g<<st[i]<<" ";
    g<<'\n';
}
bool valid()
{
    if (niv>1)
    {
        for (int i=1; i<niv; i++)
            if (st[i] == st[niv])
                return 0;
//        if (st[niv] < st[niv-1])
//            return 0;
    }
    return 1;
}
int main()
{
    f>>n>>k;
    niv = 1;
    init();
    while (niv)
    {
        bool ok=false;
        while (!ok && succesor())
        {
            if (valid())
            {
                niv++;
                init();
                ok = true;
            }
        }
        if (!ok)
            niv--;
        else
            if (solutie())
            {
                tipar();
                niv--;
            }
    }
    return 0;
}