Cod sursa(job #1685350)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 11 aprilie 2016 17:06:01
Problema Sortari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

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

const int mod = 999017;

int dp[1005]; //dp[i] = cate au lg i si num de operatii egal

int main() {

	int n;
	fin >> n;

	dp[0] = dp[1] = 1;

	for (int i = 2; i <= n; ++i) {

		dp[i] += dp[i - 1] * 2;

		for (int j = 3; j <= i; ++j) {

			//j 1 2 3.. j-2, la inceput
			dp[i] += dp[i - j + 1];

			if (dp[i] >= mod)
				dp[i] -= mod;

		}

	}

	int allPerm = 1;
	for (int i = 2; i <= n; ++i)
		allPerm = (allPerm * i) % mod;

	fout << (allPerm - dp[n] + mod) % mod << '\n';

	return 0;

}

//Trust me, I'm the Doctor!