#include<bits/stdc++.h>
using namespace std;
int n, l, r;
long long ans = 0;
const int MOD = 1e9 + 7;
vector<bool> used;
void dfs(int placed, int pos) {
if (placed == n) {
ans = (ans + 1) % MOD;
return;
}
for (int i = pos; i < l; i++) {
if (!used[i]) {
bool ok = true;
for (int j = max(0, i - r + 1); j <= min(l - 1, i + r - 1); j++) {
if (j != i && used[j]) {
ok = false;
break;
}
}
if (ok) {
used[i] = true;
dfs(placed + 1, i + 1);
used[i] = false;
}
}
}
}
int main() {
cin >> n >> l;
vector<int> rad(n);
for (int i = 0; i < n; i++) cin >> rad[i];
r = rad[0];
used.resize(l, false);
dfs(0, 0);
cout << ans << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |