Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #1132965) | Cod sursa (job #609309) | Cod sursa (job #540225) | Cod sursa (job #1988340)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("grigo.in"); ofstream fout ("grigo.out");
const int nmax = 1e5;
int v[nmax + 1];
bool ok[nmax + 1];
int main() {
int n, m;
fin >> n >> m;
for (int i = 0; i < m; ++ i) {
int x;
fin >> x;
ok[ x ] = 1;
}
for (int i = 1; i <= n; ++ i) {
v[ i ] = i;
}
int ans = 0;
do {
bool fl = 1;
int mx = 0;
for (int i = 1; i <= n; ++ i) {
if (mx < v[ i ]) {
if (ok[ i ] == 0) fl = 0;
mx = v[ i ];
} else {
if (ok[ i ] == 1) fl = 0;
}
}
if (fl) ++ ans;
} while (next_permutation(v + 1, v + n + 1));
fout << ans << "\n";
return 0;
}