Cod sursa(job #1453057)

Utilizator Player1Player 1 Player1 Data 22 iunie 2015 17:58:25
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>

bool as,ev; 
int n,k,p;

void valid(int p, int v[],bool &ev){
	int i;
	ev = true;
	if( p>0 && v[p]<=v[p-1])
		ev = false;
}

void suc(int p, int v[], bool &as){
	if( v[p]< n-k+p+1){
		v[p]++;
		as = true;
	} else
		as = false;
}

void tipar(int p, int v[]){
	int i;
	for(i = 0 ; i < k; i ++)
		printf("%d ", v[i]);
	printf("\n");
}

bool solutie(int p)
{
	if(p == k-1)
		return true;
	return false;
}

int main(){
	freopen("combinari.in","r",stdin);
	freopen("combinari.out","w",stdout);

	scanf("%d %d ", &n, &k);

	int v[n];
	p = 0;
	v[p] = 0;
	while( p>-1 ){ 
        	do{
			suc(p,v,as);
			if(as)
				valid(p,v,ev);
		}while( as  && !(as && ev));
		
		if (as) {
			if (solutie(p))
				tipar(p,v);
			else {
				p++;
				v[p] = 0;
			}
		} else 
            		p--;
	}
	
	return 0;
}