Pagini recente » Cod sursa (job #481681) | Cod sursa (job #2729917) | Cod sursa (job #164396) | Cod sursa (job #380160) | Cod sursa (job #197625)
Cod sursa(job #197625)
#include <stdio.h>
#include <vector>
#include <queue>
#include <list>
#include <set>
#include <algorithm>
#include <utility>
#include <string>
using namespace std;
#define FOR(i,a,b) for (typeof a i=a;i<=b;i++)
#define fori(it,v) for (typeof ((v).begin()) it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define mp make_pair
#define fs first
#define ss second
#define all(c) c.begin(),c.end()
int ver[100005],val[100005],n,m;
long long prod,fact;
int main()
{
FILE *in,*out;
in=fopen("grigo.in","r");
out=fopen("grigo.out","w");
fscanf(in,"%d%d",&n,&m);
FOR(i,1,m)
fscanf(in,"%d",&val[i]);
sort(val+1,val+m+1);
FOR(i,2,m)
ver[val[i]-val[i-1]]++;
ver[n-val[m]+1]++;
prod=1;
fact=1;
FOR(i,1,n)
{
fact=(fact*i)%1000003;
while (ver[i])
{
prod=(prod*fact)%1000003;
ver[i]--;
}
}
fprintf(out,"%lld\n",prod);
fclose(in);
fclose(out);
return 0;
}