Submission #1225319

#TimeUsernameProblemLanguageResultExecution timeMemory
1225319MarwenElarbiKangaroo (CEOI16_kangaroo)C++17
0 / 100
0 ms324 KiB
#include <bits/stdc++.h>
using namespace std;
const int nax=2e3+5;
const int MOD=1e9+7;
long long dp[nax][nax];
int main() {
    /*#ifndef ONLINE_JUDGE
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif*/
    int n,l,r;
    cin>>n>>l>>r;
    if(l>r) swap(l,r);
    dp[0][0]=1;
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 0; j <= n; ++j)
        {
            if(i==l||i==r){
                dp[i][j]+=dp[i-1][j+1]*(j+1);
                if(j>0) dp[i][j]+=dp[i-1][j-1];
            }else{
                if(j>1) dp[i][j]+=dp[i-1][j-2];
                dp[i][j]+=dp[i-1][j+2]*(j+1)*(j+2)/2;
            }
            //cout << i << " "<<j<<" "<<dp[i][j]<<endl;
            dp[i][j]%=MOD;
        }
    } 
    cout <<dp[n-1][0]<<endl;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...