Cod sursa(job #727468)

Utilizator avram_florinavram florin constantin avram_florin Data 27 martie 2012 23:42:50
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>

using namespace std;

const int MaxN = 301;
const int Mod = 10007;

int N,K,perm[MaxN],D[MaxN][MaxN];

const char InFile[] = "permutari2.in";
const char OutFile[] = "permutari2.out";

int main()
{
	ifstream fin( InFile );
	ofstream fout( OutFile );
	fin >> N >> K;
	perm[1] = 1;
	for( register int i = 2 ; i <= N ; ++i )
		perm[i] = ( perm[i-1] * i ) % Mod;
	D[1][1] = 1;
	for( register int i = 2 ; i <= N ; ++i )
		{
			int total = 0;
			for( register int j = 2 ; j <= N ; ++j )
				{
					for( register int k = i-1 ; k >= j-1 ; --k )
						D[i][j] = ( D[i][j] + (D[i-k][1]*D[k][j-1])%Mod )%Mod;
					total = ( total + D[i][j] ) % Mod;
				}
			D[i][1] = ( perm[i] - total + Mod ) % Mod;
		}
	fout << D[N][K] % Mod << '\n';
	fin.close();fout.close();
	return 0;
}