Cod sursa(job #516594)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 24 decembrie 2010 22:49:55
Problema Grigo Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "grigo.in";
const char oname[] = "grigo.out";
const int  nmax    = 100005;
const int  mod     = 1000003;

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

int n, k, vis[nmax], i, p[nmax], x, ct, last, first, sol, ls;
int perm[nmax], cateam;
	

int main()
{
	fin >> n >> k;
	for(i = 1; i <= k; i ++)
	{	
		fin >> x;
		vis[x] = 1;
		last = x;
	}
	
	/*perm[0] = 1;
	for(i = 1; i <= 100005; i ++)
		perm[i] = (long long)(perm[i - 1] * i) % 1000003;
*/

		
	p[0] = 1;
	for(i = 1; i <= n; i ++)
	{
		if(vis[i] == 1)
			p[i] = p[i - 1];
		else
			p[i] = (p[i - 1] * (i - 1)) % mod;
	}

/*	
	if(first == 1)
	{
		ls = 1;
		sol = n - k + 1;
	}
		
	for(i = 1; i <= n; i ++)
	{
		if(i == first)
		{
			sol = n - k + 1;
			ls = i;
		}
		if(i != first && vis[i] == 1)
		{
			sol = sol * perm[i - ls];
			ls = i;
		}
		if(i == last)
			sol = sol * perm[n - last];
	}
	
	*/		
	
	//fout << sol;
	fout << p[n];
	return 0;
}