Cod sursa(job #234840)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 22 decembrie 2008 01:06:15
Problema Combinari Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#define N 20
int x[N],viz[N],nrviz,m,n,k,as,a[N*N][N],num;
bool ev;
int main()
{
	freopen("combinari.in","r",stdin);
	freopen("combinari.out","w",stdout);
	scanf("%d%d",&m,&n);
	k=1;
	x[k]=0;
	while (k)
	{
		do
		{
			if (x[k]<m)
			{
				as=1;
				viz[x[k]]--;
				x[k]++;
				viz[x[k]]++;
				nrviz=0;
				for (int i=1; i<=m; ++i)
					if (viz[i]) 
						++nrviz;
				ev=(nrviz+m-k>=n);
			}
			else
				as=0;
		}
		while (as&&!ev);
		if (as)
			if (n==k)
			{
				int ok=1;
				for (int i=1; i<n ;++i)
					if (x[i]>=x[i+1]){
						ok=0;break;}
					if (ok){
						for (int i=1; i<=n; ++i)
					printf("%d ",x[i]);
				printf("\n");
					}
			}
			else
				x[++k]=0;
			else
			{
			--viz[x[k]];--k;
			}
				
	}
	return 0;
}