제출 #491637

#제출 시각아이디문제언어결과실행 시간메모리
491637inluminas캥거루 (CEOI16_kangaroo)C++14
100 / 100
45 ms31856 KiB
#include"bits/stdc++.h"
using namespace std;

#define ll long long
#define endl "\n"
#define fastio ios_base::sync_with_stdio(false)
#define inf LLONG_MAX

const ll mod=1e9+7;
const int lmt=2e3+10;

ll dp[lmt][lmt];

int main(){
  fastio;

  int n,cs,cf;
  cin>>n>>cs>>cf;
  if(cs>cf) swap(cs,cf);
  dp[1][1]=1;
  int blok=(1==cs || 1==cf);
  for(int i=1;i<n;i++){
    if(i+1==cs || i+1==cf)  blok++;
    for(int j=1;j<=n;j++){
      if(i+1==cs || i+1==cf){
        dp[i+1][j]=(dp[i+1][j]+dp[i][j])%mod;
        dp[i+1][j+1]=(dp[i+1][j+1]+dp[i][j])%mod;

        continue;
      }

      dp[i+1][j+1]=(dp[i+1][j+1]+(dp[i][j]*(j+1-blok))%mod)%mod;
      if(j-1>0) dp[i+1][j-1]=(dp[i+1][j-1]+(dp[i][j]*(j-1))%mod)%mod;
    }
  }
  cout<<dp[n][1]<<endl;
  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...