Submission #1026781

#TimeUsernameProblemLanguageResultExecution timeMemory
1026781hqminhuwu캥거루 (CEOI16_kangaroo)C++14
100 / 100
17 ms23196 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair <ll,ll> pll;
typedef pair <int,int> pii;
typedef pair <int,pii> piii;

#define forr(_a,_b,_c) for(int _a = (_b); _a <= (_c); ++_a)
#define ford(_a,_b,_c) for(int _a = (_b) + 1; _a --> (_c);)
#define forf(_a,_b,_c) for(int _a = (_b); _a < (_c); ++_a)
#define st first
#define nd second
#define pb push_back
#define mp make_pair
#define all(x) begin(x),end(x)
#define mask(i) (1LL << (i))
#define bit(x, i) (((x) >> (i)) & 1)
#define bp __builtin_popcountll
#define file "test"

template<class X, class Y>
    bool minz(X &x, const Y &y) {
        if (x > y) {
            x = y;
            return true;
        } return false;
    }
template<class X, class Y>
    bool maxz(X &x, const Y &y) {
        if (x < y) {
            x = y;
            return true;
        } return false;
    }

const int N = 5e5 + 5;
const ll oo = (ll) 1e16;
const ll mod = 1e9 + 7; // 998244353;

ll n, s, e, dp[2007][2007];

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    #ifdef hqm
        freopen(file".inp", "r", stdin); freopen(file".out", "w", stdout);
    #endif

    cin >> n >> s >> e;
    s--;
    e--;

    dp[0][0] = 1;

    forf (i, 0, n){
        forr (j, 0, i){
            if (i == s || i == e){
                (dp[i + 1][j+1] += dp[i][j]) %= mod;
                (dp[i + 1][j] += dp[i][j]) %= mod;
            } else {
                (dp[i + 1][j+1] += dp[i][j] * (j - 1 + (i < s) + (i < e))) %= mod; 
                if (j > 1) 
                    (dp[i + 1][j - 1] += dp[i][j] * (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...