64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
#include <iostream>
|
|
using namespace std;
|
|
int main(){
|
|
int n,m,max,may;
|
|
cin>>n>>m>>may>>max;
|
|
long long a[22][22];
|
|
//reset to 0
|
|
for(int i=0;i<22;i++){
|
|
for(int j=0;j<22;j++){
|
|
a[i][j]=0;
|
|
}
|
|
}
|
|
for(int i = 0; i < 22; i++){
|
|
a[0][i]=1;
|
|
a[i][0]=1;
|
|
}
|
|
a[may][max]=-1;
|
|
if((may-1)>=0&&(max-2)>=0) a[may-1][max-2]=-1;
|
|
if((may-2)>=0&&(max-1)>=0) a[may-2][max-1]=-1;
|
|
if((may-2)>=0&&(max+1)<=21) a[may-2][max+1]=-1;
|
|
if((may-1)>=0&&(max+2)<=21) a[may-1][max+2]=-1;
|
|
if((may+1)<=21&&(max+2)<=21) a[may+1][max+2]=-1;
|
|
if((may+2)<=21&&(max+1)<=21) a[may+2][max+1]=-1;
|
|
if((may+2)<=21&&(max-1)>=0) a[may+2][max-1]=-1;
|
|
if((may+1)<=21&&(max-2)>=0) a[may+1][max-2]=-1;
|
|
for(int i=0;i<22;i++){
|
|
if(a[i][0]==-1){
|
|
for(int j=i;j<22;j++){
|
|
a[j][0]=0;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
for(int i=0;i<22;i++){
|
|
if(a[0][i]==-1){
|
|
for(int j=i;j<22;j++){
|
|
a[0][j]=0;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
for(int i=1;i<22;i++){
|
|
for(int j=1;j<22;j++){
|
|
if(a[i][j]==-1)
|
|
continue;
|
|
if(a[i][j]!=-1&&a[i-1][j]!=-1&&a[i][j-1]!=-1)
|
|
a[i][j]=a[i-1][j]+a[i][j-1];
|
|
if(a[i][j]!=-1&&a[i-1][j]!=-1&&a[i][j-1]==-1)
|
|
a[i][j]=a[i-1][j];
|
|
if(a[i][j]!=-1&&a[i-1][j]==-1&&a[i][j-1]!=-1)
|
|
a[i][j]=a[i][j-1];
|
|
}
|
|
}
|
|
cout<<a[n][m]<<endl;
|
|
/*
|
|
for(int i=0;i<22;i++){
|
|
for(int j=0;j<22;j++){
|
|
cout<<a[i][j]<<" ";
|
|
}
|
|
cout<<endl;
|
|
}//*/
|
|
return 0;
|
|
}
|