Cod sursa(job #778697)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 15 august 2012 16:56:19
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb

#include <fstream>

int main (void)
{
	unsigned short n,k;
	std::ifstream input("combinari.in");
	input >> n >> k;
	input.close();
	n += '0';
	char *set(new char [k]), *iterator(set), *end(set + k - 1);
	char character('1');
	do
	{
		*iterator = character;
		++iterator;
		++character;
	}
	while (iterator <= end);
	std::ofstream output("combinari.out");
	while (true)
	{
		// print
		iterator = set;
		while (true)
		{
			character = *iterator;
			if (character > '9')
			{
				output.put('1');
				character -= '0';
				character %= 10;
				character += '0';
			}
			output.put(character);
			if (iterator == end)
				break;
			output.put(' ');
			++iterator;
		}
		output.put('\n');
		// generate next
		++*end;
		if (*end > n)
		{
			character = n - 1;
			iterator = end - 1;
			while (iterator >= set && *iterator == character)
			{
				--iterator;
				--character;
			}
			// if the set is sorted in decreasing order the algorithm is finished
			if (iterator < set)
				break;
			// otherwise increment current character sort the set [iterator, end]
			++*iterator;
			do
			{
				iterator[1] = *iterator + 1;
				++iterator;
			}
			while (iterator < end);
		}
	}
	output.close();
	delete [ ] set;
	return 0;
}