Submission #609393

#TimeUsernameProblemLanguageResultExecution timeMemory
609393SlavicGKangaroo (CEOI16_kangaroo)C++17
100 / 100
27 ms31700 KiB
#include "bits/stdc++.h"
using namespace std;
 
const int mod = 1e9 + 7;
void solve() {
    int n, s, t; cin >> n >> s >> t; if(s > t) swap(s, t);
    vector<vector<int64_t>> dp(n + 1, vector<int64_t>(n + 2, 0));
    dp[0][0] = 1;
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= i; ++j) {
            if(i == s || i == t) {
                dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % mod;
            } else {
                dp[i][j] += dp[i - 1][j - 1] * (j - (i > s) - (i > t)) % mod;
                dp[i][j] += (dp[i - 1][j + 1] * j) % mod;
                dp[i][j] %= mod;
            }
        }
    }
    cout << dp[n][1] << "\n";
}   
 
int32_t main() {
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t = 1;
    //cin >> t;
    while(t--) {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...