Cod sursa(job #544310)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 1 martie 2011 13:25:06
Problema Sortari2 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <iostream>
#include <fstream>

using namespace std;
 
const char iname[] = "sortari2.in";
const char oname[] = "sortari2.out";
const int  mod     =  999017;

ifstream fin(iname);
ofstream fout(oname);

int fact[1005], i, n, j, l, k;
int dp[1005][1005];

int main()
{
	fin >> n;
	fact[0] = 1;
	for(i = 1; i <= n; i ++)
		fact[i] = (i * fact[i - 1]) % mod;
	dp[1][0] = 1;
	dp[0][0] = 1;
	for(i = 2; i <= n; i ++)
		for(j = 0; j <= n; j ++)
			for(l = max(1, i - j); l <= n; l ++)
				dp[i][j] = (dp[i][j] + dp[i - 1][j - (i - l)]) % mod;
	fout << fact[n] - dp[n][n - 1] - dp[n][n] - 1;
	return 0;
}