제출 #1237473

#제출 시각아이디문제언어결과실행 시간메모리
1237473d4nnaeeMagneti (COCI21_magneti)C++20
0 / 110
1095 ms320 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...