Language: C++

#include<bits/stdc++.h>
using namespace std;
const long N=2e5+5,M=1e9+7;
register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
inline long C(long n,long m){return fac[n]*ifac[m]%M*ifac[n-m]%M;}
int main(){
	cin>>h>>w>>a>>b,up=max(w,h),fac[0]=fac[1]=ifac[0]=ifac[1]=1;
	for(i=2;i<=up<<1;++i)fac[i]=fac[i-1]*i%M,ifac[i]=ifac[M%i]*(M-M/i)%M;
	for(i=2;i<=up<<1;++i)ifac[i]=ifac[i]*ifac[i-1]%M;
	for(i=1;i<=h-a;++i)(ans+=C(b+i-2,b-1)*C(h+w-b-i-1,w-b-1)%M)%=M;
	cout<<ans;
}


Compiler output:
a.cc:4:15: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |               ^
a.cc:4:17: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                 ^
a.cc:4:19: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                   ^
a.cc:4:21: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                     ^
a.cc:4:23: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                       ^~~
a.cc:4:30: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                              ^~~~
a.cc:4:38: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                                      ^~~
a.cc:4:44: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                                            ^~
a.cc:4:47: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                                               ^
a.cc:4:15: error: register name not specified for 'h'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |               ^
a.cc:4:17: error: register name not specified for 'w'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                 ^
a.cc:4:19: error: register name not specified for 'a'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                   ^
a.cc:4:21: error: register name not specified for 'b'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                     ^
a.cc:4:23: error: register name not specified for 'fac'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                       ^~~
a.cc:4:30: error: register name not specified for 'ifac'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                              ^~~~
a.cc:4:38: error: register name not specified for 'ans'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                                      ^~~
a.cc:4:44: error: register name not specified for 'up'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                                            ^~
a.cc:4:47: error: register name not specified for 'i'
    4 | register long h,w,a,b,fac[N],ifac[N],ans=0,up,i;
      |                                               ^