Cod sursa(job #869162)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 1 februarie 2013 00:31:30
Problema Combinari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>

typedef int sir[100];
sir x, a;
int n, k, as, ev, i, p;

void succ(sir x, int k, int* as)
{
	if(x[k] < n)
	{
		*as = 1;
		x[k]++;
	}
	else
		*as = 0;
}

void valid(sir x, int k, int* ev)
{
	*ev = 1;
	if((k >= 2) && !(a[x[k]] > a[x[k-1]]))
		*ev = 0;
}

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

int main(void)
{
	freopen("combinari.in", "r", stdin);
	freopen("combinari.out", "w", stdout);
	scanf("%d", &n);
	scanf("%d", &p);
	for(i=1;i<=n;i++)
		a[i] = i;
	k = 1;
	x[k] = 0;
	while(k > 0)
	{
		do
		{
			succ(x, k, &as);
			if(as)
				valid(x, k, &ev);
		}while(as && !ev);
		if(as)
			if(k == p)
				afis(x, k);
			else
			{
				k++;
				x[k] = 0;
			}
		else
			k--;
	}
}