Cod sursa(job #516585)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 24 decembrie 2010 21:26:14
Problema Grigo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

int n, k, vis[nmax], i, p[nmax], x, ct, last;

int main()
{
	fin >> n >> k;
	for(i = 1; i <= k; i ++)
	{
		fin >> x;
		vis[x] = 1;
		last = x;
	}
	
	p[0] = 1;
	for(i = 1; i <= n; i ++)
	{
		if(vis[i] == 1 && i != last)
		{
			ct ++;
			p[i] = p[i - 1] * (n - i);
		}
		else
			if(i == last)
			{
				ct++;
				p[i] = p[i - 1];
			}
		else
			p[i] = p[i - 1] * (n - ct);
	}
	
	fout << p[n - 1];
	return 0;
}