제출 #1200511

#제출 시각아이디문제언어결과실행 시간메모리
1200511HoriaHaivas캥거루 (CEOI16_kangaroo)C++20
0 / 100
0 ms524 KiB
#include<bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
#define int long long

using namespace std;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int range_rng(int l, int r)
{
    return uniform_int_distribution<int>(l,r)(rng);
}

const int mod=1e9+7;
int dp[2005][2005];

void add(int &a, int b)
{
    if (b<0)
        return;
    a+=b;
    if (a>=mod)
        a-=mod;
}

signed main()
{
    //ifstream fin("felinare.in");
    //ofstream fout("felinare.out");
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,i,j,cs,cf,blocked;
    cin >> n >> cs >> cf;
    blocked=0;
    dp[0][0]=1;
    for (i=1;i<=n;i++)
    {
         for (j=1;j<=i;j++)
         {
             if (i==cs || i==cf)
             {
                 add(dp[i][j],dp[i-1][j-1]*1);
                 add(dp[i][j],dp[i-1][j]*1);
                 blocked++;
             }
             else
             {
                 add(dp[i][j],dp[i-1][j-1]*((j-1)+1-blocked));
                 add(dp[i][j],dp[i-1][j+1]*((j+1)-1));
             }
         }
    }
    cout << dp[n][1];
    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...