比赛 |
国庆欢乐赛3 |
评测结果 |
AATTTTTTTT |
题目名称 |
毛二琛 |
最终得分 |
20 |
用户昵称 |
xuyuqing |
运行时间 |
16.034 s |
代码语言 |
C++ |
内存使用 |
3.49 MiB |
提交时间 |
2025-10-05 11:50:47 |
显示代码纯文本
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;
const int N = 5114;
const long long MOD = 1e9 + 7;
int n;
int nums[N];
int pairCc;
bool vis[N];
long long res;
void dfs (int now) {
if (now == n - 1) {
for (int i = 0; i < n; i++) {
if (i != nums[i]) {
return;
}
}
res++;
return;
}
for (int i = 0; i < n - 1; i++) {
if (!vis[i]) {
swap (nums[i], nums[i + 1]);
vis[i] = true;
dfs (now + 1);
vis[i] = false;
swap (nums[i], nums[i + 1]);
}
}
}
int main () {
freopen ("swap.in", "r", stdin);
freopen ("swap.out", "w", stdout);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> nums[i];
for (int j = 0; j < i; j++) {
if (nums[j] > nums[i]) {
pairCc++;
int num1 = i - j;
int num2 = nums[j] - nums[i];
}
}
}
if (pairCc != n - 1) {
cout << 0 << endl;
return 0;
}
dfs (0);
cout << res << endl;
return 0;
}