RT
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
long long xx,yy,n,m,dp[30][30];
int main(){
cin>>n>>m>>xx>>yy;
if((xx+1<=n)&&(yy-2>=0))dp[xx+1][yy-2]=-1;
if((xx+1<=n)&&(yy+2<=m))dp[xx+1][yy+2]=-1;
if((xx-1>=0)&&(yy-2>=0))dp[xx-1][yy-2]=-1;
if((xx-1>=0)&&(yy+2<=m))dp[xx-1][yy+2]=-1;
if((xx+2<=n)&&(yy-1>=0))dp[xx+2][yy-1]=-1;
if((xx+2<=n)&&(yy+1<=m))dp[xx+2][yy+1]=-1;
if((xx-2>=0)&&(yy-1>=0))dp[xx-2][yy-1]=-1;
if((xx-2>=0)&&(yy+1<=m))dp[xx-2][yy+1]=-1;
dp[1][1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==1&&j==1)continue;
if(dp[i][j]==-1)continue;
if(dp[i][j-1]==-1&&dp[i-1][j]==-1)dp[i][j]=0;
else if(dp[i][j-1]==-1)dp[i][j]=dp[i-1][j];
else if(dp[i-1][j]==-1)dp[i][j]=dp[i][j-1];
else dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
cout<<dp[n][m];
return 0;
}
本人样例都没过