Cod sursa(job #557924)

Utilizator krysstynelBojor Fineas Cristian krysstynel Data 16 martie 2011 23:04:01
Problema Combinari Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fi("combinari.in");
ofstream fo("combinari.out");

int n,sol[20],k,l,a,s=0,x[1000];

bool valid()
{
	l=0;

	for(int i=1; i<=n; i++)
		if(sol[i])
			l++;

	if(l==k)
		return 1;

	return 0;
}

void scrie()
{
	int aux=0;
	
	sort(x,x+s);
	
	for(int i=0; i<=s; i++)
    {
		aux=0;

		while(x[i])
        {
            aux=aux*10+x[i]%10;

            x[i]/=10;
        }

        x[i]=aux;
    }
	
	;
	
	for(int i=0; i<=s; i++)
    {
		aux=0;

		while(x[i])
        {
            fo<<x[i]%10<<" ";

            x[i]/=10;
        }

        fo<<'\n';
    }
}


void afisare()
{
	a=0;

	for(int i=1; i<=n; i++)
		if(sol[i])
			a=a*10+i;

	x[s]=a;
	s++;
}

void back(int pas)
{
	if(pas>n)
	{
		if(valid())
			afisare();

		return;
	}

	sol[pas]=0;

	back(pas+1);

	sol[pas]=1;

	back(pas+1);
}

int main()
{
	fi>>n>>k;

	back(1);

	scrie();

	fi.close();
	fo.close();

	return 0;
}