제출 #480893

#제출 시각아이디문제언어결과실행 시간메모리
480893Joo캥거루 (CEOI16_kangaroo)C++17
100 / 100
48 ms22956 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
const int N = 2e3+10;

int n,St,Ed;
ll dp[N][N],mod = 1e9+7;

int main(void){
    cin >> n >> St >> Ed;
    dp[1][1] = 1;
    for(int i = 1; i < n; i++){
        for(int j = 1; j <= i; j++){
            if(i + 1 == St or i + 1 == Ed){
                dp[i+1][j] += dp[i][j];
                dp[i+1][j] %= mod;
                dp[i+1][j+1] += dp[i][j];
                dp[i+1][j+1] %= mod;
            }else{
                dp[i+1][j-1] += dp[i][j]*(j-1);
                dp[i+1][j-1] %= mod;
                dp[i+1][j+1] += dp[i][j]*(j+1-(i >= St)-(i >= Ed));
                dp[i+1][j+1] %= mod;
            }
        }
    }
    cout << dp[n][1] << "\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...