Language: C++

#include <bits/stdc++.h>
#define REP(i,n) for(int i=0;i<n;i++)
long long inf=(long long)1E17;
#define i_7 (long long)(1E9+7)
long mod(long a){
    long long c=a%i_7;
    if(c>=0)return c;
    return c+i_7;
}

//typedef long long ll;
long long po(long a, long b){
    if(b==0){
        return 1;
    }
    
    long long z = po(a,b/2);
    z = mod(z*z);
    if(b%2!=0){
        z = mod(a*z);
    }
    return z;
}

//配列のSIZEは問題ごとに定義する必要がある。
SIZE=200010;
long long inv[SIZE+1];//各iの逆元を格納する配列。
long long kai[SIZE+1];//i!のmodを格納する配列。
long long invkai[SIZE+1];//各i!の逆元を格納する配列。
const int MOD=i_7;
void invinit(){//上の配列を初期化する関数。
    inv[1]=1;
    for(int i=2;i<=SIZE;i++){
        inv[i] = MOD - ((MOD/i)*inv[MOD%i])%MOD;
    }
    
    kai[0]=invkai[0]=1;
    for(int i=1;i<=SIZE;i++){
        kai[i]=(kai[i-1]*i)%MOD;
        invkai[i]=(invkai[i-1]*inv[i])%MOD;
    }
}

long long comb(long long a, long long b){
    if(b<0 || a<b){
        return 0;
    }
    return mod(kai[a]*mod(invkai[b]*invkai[a-b]));
}

int main(){
  int h,w,a,b;
  cin>>h>>w>>a>>b;
  long long ans=0;
  
  invinit();
  REP(i,h-a+1){
    ans += mod(comb(b+i,b)*comb(h-i+w-b));
  }
  cout<<ans<<endl;
  return 0;
}
  
  

Compiler output:
a.cc:26:1: error: 'SIZE' does not name a type
   26 | SIZE=200010;
      | ^~~~
a.cc:27:15: error: 'SIZE' was not declared in this scope
   27 | long long inv[SIZE+1];//各iの逆元を格納する配列。
      |               ^~~~
a.cc:28:15: error: 'SIZE' was not declared in this scope
   28 | long long kai[SIZE+1];//i!のmodを格納する配列。
      |               ^~~~
a.cc:29:18: error: 'SIZE' was not declared in this scope
   29 | long long invkai[SIZE+1];//各i!の逆元を格納する配列。
      |                  ^~~~
a.cc: In function 'void invinit()':
a.cc:32:5: error: 'inv' was not declared in this scope; did you mean 'int'?
   32 |     inv[1]=1;
      |     ^~~
      |     int
a.cc:33:20: error: 'SIZE' was not declared in this scope
   33 |     for(int i=2;i<=SIZE;i++){
      |                    ^~~~
a.cc:37:5: error: 'kai' was not declared in this scope
   37 |     kai[0]=invkai[0]=1;
      |     ^~~
a.cc:37:12: error: 'invkai' was not declared in this scope
   37 |     kai[0]=invkai[0]=1;
      |            ^~~~~~
a.cc:38:20: error: 'SIZE' was not declared in this scope
   38 |     for(int i=1;i<=SIZE;i++){
      |                    ^~~~
a.cc: In function 'long long int comb(long long int, long long int)':
a.cc:48:16: error: 'kai' was not declared in this scope
   48 |     return mod(kai[a]*mod(invkai[b]*invkai[a-b]));
      |                ^~~
a.cc:48:27: error: 'invkai' was not declared in this scope
   48 |     return mod(kai[a]*mod(invkai[b]*invkai[a-b]));
      |                           ^~~~~~
a.cc: In function 'int main()':
a.cc:53:3: error: 'cin' was not declared in this scope; did you mean 'std::cin'?
   53 |   cin>>h>>w>>a>>b;
      |   ^~~
      |   std::cin
In file included from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:146,
                 from a.cc:1:
/usr/include/c++/14/iostream:62:18: note: 'std::cin' declared here
   62 |   extern istream cin;           ///< Linked to standard input
      |                  ^~~
a.cc:58:32: error: too few arguments to function 'long long int comb(long long int, long long int)'
   58 |     ans += mod(comb(b+i,b)*comb(h-i+w-b));
      |                            ~~~~^~~~~~~~~
a.cc:44:11: note: declared here
   44 | long long comb(long long a, long long b){
      |           ^~~~
a.cc:60:3: error: 'cout' was not declared in this scope; did you mean 'std::cout'?
   60 |   cout<<ans<<endl;
      |   ^~~~
      |   std::cout
/usr/include/c++/14/iostream:63:18: note: 'std::cout' declared here
   63 |   extern ostream cout;          ///< Linked to standard output
      |                  ^~~~
a.cc:60:14: error: 'endl' was not declared in this scope; did you mean 'std::endl'?
   60 |   cout<<ans<<endl;
      |              ^~~~
      |              std::endl
In file included from /usr/include/c++/14/istream:41,
                 from /usr/include/c++/14/sstream:40,
                 from /usr/include/c++/14/complex:45,
                 from /usr/include/c++/14/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:127:
/usr/include/c++/14/ostream:744:5: note: 'std::endl' declared here
  744 |     endl(basic_ostream<_CharT, _Traits>& __os)
      |     ^~~~