Cod sursa(job #1232897)

Utilizator valexVochescu Alexandru valex Data 24 septembrie 2014 10:46:43
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
using namespace std;
int x[20],n,p,k,ok,nr=0;

FILE *f = fopen ("combinari.in","r");
FILE *g = fopen ("combinari.out","w");

void afisare()
{
    int i;
    nr++;
    for (i=1;i<=p;i++)
        fprintf(g,"%d ",x[i]);
    fprintf(g,"\n");
}

void continuare( int k, int &ok)
{
    ok=1;
    if ((k>1) && (x[k]<=x[k-1]))
        {
            ok=0;
        }
}

int succesor(int k)
{
    if (x[k]<n-p+k)
    {
        x[k]++;
        return 1;
    }
    return 0;
}

int main()
{
    fscanf(f,"%d %d",&n,&p);
    k=1;
    x[k]=0;
    while (k>0)
    {
        ok=0;
        while (!ok && succesor(k))
            continuare(k,ok);
        if (!ok) k--;
        else if (k==p) afisare();
            else {
                k++;
                x[k]=0;
            }
    }
    fclose(f);
    fclose(g);
    return 0;
}