Cod sursa(job #979904)

Utilizator robert_stefanRobert Stefan robert_stefan Data 3 august 2013 11:50:53
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#define IN "submultimi.in"
#define OUT "submultimi.out"
#define NMAX 17

using namespace std;

ifstream in(IN);
ofstream out(OUT);

int N, v[NMAX];
bool c[NMAX];

inline int pow(int baza, int exp)
{
	int rez=1;
	while(exp)
	{
		if(exp%2==1)
			rez*=baza;
		baza*=baza;
		exp/=2;
	}
	return rez;
}

inline void scrie()
{
	int i;
	for(i=1; i<=N; ++i)
		if(c[i])
			out<<v[i]<<' ';
	out<<'\n';
}

inline void scriec()
{
	int i;
	for(i=1; i<=N; ++i)
		out<<c[i]<<' ';
	out<<'\n';
}

inline void solve()
{
	int i, gata, M;
	M=pow(2,N)-1;
	//out<<N<<endl;
	while(M)
	{
		i=1;
		gata=0;
		while(gata==0)//gata=0
			if(c[i]==0)
				c[i]++,
				gata=1;
			else//v[i]==1
				c[i]=0,
				++i;
		scrie();
		//scriec();
		--M;
	}
}

int main()
{
	in>>N;
	int i;
	for(i=1; i<=N; ++i)
		v[i]=i;
	solve();
	in.close();
	out.close();
	return 0;
}