```
#include<bits/stdc++.h>
using namespace std;
long long C(int m,int n){
if(n<0||m<0||n<m)
return 0;
long long o=1;
for(int i=1;i<=m;i++){
o*=n-i+1;
o/=i;
}
return o;
}
int n,m,x,y,t[5][5]={0,0,1,0,0,0,0,1,1,0,0,0,0,1,1},w[5][5]={{},{},1,1,0,0,0,0,1,1,0,0,0,0,1,0,0};
int main(){
cin>>n>>m>>x>>y;
if(n-x<3 && m-y<3){
x=n-x;
y=m-y;
}
if(x<3 && y<3){
int nx=2-x;
int ny=2-y;
long long o=0;
o+=C(n-x,m+n-x-y-3)*t[nx][ny];
o+=C(n-x-3,m+n-x-y-3)*w[nx][ny];
cout<<o;
return 0;
}
long long o=C(n,n+m);
for(int i=-2;i<=2;i++){
o-=C(x-i,x+y)*C(n-x+i,n+m-x-y);
}
o+=C(x+2,x+y-1)*C(n-x-3,n+m-x-y-1);
o+=C(x-3,x+y-1)*C(n-x+2,n+m-x-y-1);
o+=C(x,x+y-3)*C(n-x-3,n+m-x-y-3);
o+=C(x-3,x+y-3)*C(n-x,n+m-x-y-3);
cout<<o;
return 0;
}
//C++递推
```
by Blood_red @ 2021-02-23 17:55:40