Cod sursa(job #2278780)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 8 noiembrie 2018 15:50:34
Problema Grigo Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

#define NM 100002
#define MOD 1000003

using namespace std;

int p[NM];

int argm(int n, int k)
{
    if(k == 0)
        return 1;
    if(n == 0)
        return 1;
    int ans = 1;
    for(int i = n - k + 1; i <= n; i++)
        ans = 1ll * ans * i % MOD;
    return ans;
}

int solve(int n, int m)
{
    if(n == 0)
        return 1;
    if(m == 0)
        return argm(n, n);
    return solve(p[m] - 1, m - 1) * argm(n - 1, n - p[m]);
}

int main()
{
    ifstream fin ("grigo.in");
    ofstream fout ("grigo.out");
    int n, m;
    fin >> n >> m;
    for(int i = 1; i <= m; i++)
        fin >> p[i];
    sort(p + 1, p + m + 1);
    if(p[1] == 1)
        fout << solve(n, m);
    else
        fout << "0\n";
    return 0;
}