D - いろはちゃんとマス目 別解(NGな通路を引くVER)

f:id:peroon:20210512202243p:plain

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    // 座標は1-indexed
    // 下方向をy
    // 右方向をx

    // nCrテーブルは作られているとする

    // input
    ll h,w,a,b;
    cin>>h>>w>>a>>b;

    ll mi = min(a,b);

    mint sum = nCr(h+w-2,w-1);

    // 左下の分を引く
    ll y = h-a+1;
    ll x = b;
    rep(i,mi){
      // 前半
      mint m = nCr(y+x-2,x-1);
      
      // 後半
      ll dy = h-y;
      ll dx = w-x;
      m *= nCr(dy+dx,dx);

      sum -= m;

      y++;
      x--;
    }
    p(sum.x);
    
    return 0;
}