Cod sursa(job #786048)

Utilizator RoPaulPersa Paul RoPaul Data 10 septembrie 2012 13:54:04
Problema Grigo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
#include<algorithm>
using namespace std;
int N,M,poz[100001],i,j;
long long r=1;
int factorial(int a)
{
	int i,ret=1;
	for(i=2;i<=a;i++)
		ret*=i;
	return ret;
}
int main()
{
	///////////////////// citire
	ifstream f("grigo.in");
	f>>N>>M;
	for(i=1;i<=M;i++)
		f>>poz[i];
	f.close();
	///////////////// ordonare
	sort(poz+1,poz+M+1);
	//////////////////////// factoriala intre pozitii
	for(i=1;i<=M;i++)
		r*=factorial(poz[i]-poz[i-1]-1);
	r*=factorial(N-poz[M]);
	///////////////////////
	for(i=1;i<M;i++)
		r*=poz[i+1]-poz[i];
	r*=N-poz[M]+1;
	////////////////////////
	ofstream g("grigo.out");
	g<<r;
	g.close();
	return 0;
}