Cod sursa(job #623642)

Utilizator david_raucaRauca Ioan David david_rauca Data 20 octombrie 2011 15:11:21
Problema Farfurii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
using namespace std;

ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

#define INF 999999

int n, k;
int x[100001];
bool s[100001];
int sol[100001];
bool ok1;

void Solve( int q);

int main()
{
	fin >> n >> k;
	ok1 = true;
	Solve( 1 );
	
	for( int i = 1; i <= n; ++i )
		fout << sol[i] << ' ';
	
	fin.close();
	fout.close();
	
	return 0;
}

void Solve( int q )
{
	if( ok1 == false )
		return;
	
	if( x[q] == 0 )
	{
		x[q] = INF;
		sol[q] = INF;
	}
	
	bool ok = true;
	
	for( int i = 1; i <= n; ++i )
		if( !s[i] )
		{
			s[i] = true;
			ok = false;
			x[q] = i;
			Solve( q+1);
			s[i] = false;
		}
	
	if( ok )
	{
		int nr = 0;
			for( int j = 1; j < n; ++j)
				for( int j1 = j + 1; j1 <= n;++j1 )
					if( x[j] > x[j1] )
						nr++;
		if( nr == k )
		{
			for( int j = 1; j <= n; ++j )
				if( sol[j] > x[j] )
				{
					for( int j1 = 1; j1 <= n; ++j1 )
						sol[j1] = x[j1];
					ok1 = false;
					return;
				}
		}
	}
}