#include <iostream>
using namespace std;
struct zb
{
long long x;
long long y;
};
int main()
{
zb dd, m;
long long qp[105][105];
cin >> dd.x >> dd.y >> m.x >> m.y;
for (int i = 0; i <= dd.x; i++)
{
for (int j = 0; j <= dd.y; j++)
{
qp[i][j] = 2;
}
}
for (int i = 0; i <= dd.x; i++)
{
qp[i][0] = 1;
}
for (int j = 0; j <= dd.y; j++)
{
qp[0][j] = 1;
}
// for (int i = 0; i <= dd.x; i++)
// {
// for (int j = 0; j <= dd.y; j++)
// {
// cout << qp[i][j] << " ";
// }
// cout << endl;
// }
qp[m.x - 2][m.y - 1] = 0;
qp[m.x - 1][m.y - 2] = 0;
qp[m.x - 2][m.y + 1] = 0;
qp[m.x - 1][m.y + 2] = 0;
qp[m.x + 1][m.y + 2] = 0;
qp[m.x + 2][m.y + 1] = 0;
qp[m.x + 2][m.y - 1] = 0;
qp[m.x + 1][m.y - 2] = 0;
// for (int i = 0; i <= dd.x; i++)
// {
// for (int j = 0; j <= dd.y; j++)
// {
// cout << qp[i][j] << " ";
// }
// cout << endl;
// }
zb temp;
bool bj = 0;
for (int j = 0; j <= dd.x; j++)
{
if (qp[0][j] == 0 && bj == 0)
{
temp.x = 0;
temp.y = j;
bj = 1;
continue;
}
if (bj == 1)
{
qp[0][j] = 0;
}
}
// for (int i = 0; i <= dd.x; i++)
// {
// for (int j = 0; j <= dd.y; j++)
// {
// cout << qp[i][j] << " ";
// }
// cout << endl;
// }
bj = 0;
for (int i = 0; i <= dd.y; i++)
{
if (qp[i][0] == 0 && bj == 0)
{
temp.x = i;
temp.y = 0;
bj = 1;
continue;
}
if (bj == 1)
{
qp[i][0] = 0;
}
}
qp[m.x][m.y] = 0;
// for (int i = 0; i <= dd.x; i++)
// {
// for (int j = 0; j <= dd.y; j++)
// {
// cout << qp[i][j] << " ";
// }
// cout << endl;
// }
for (int i = 1; i <= dd.x; i++)
{
for (int j = 1; j <= dd.y; j++)
{
if (qp[i][j] != 0)
{
qp[i][j] = qp[i][j - 1] + qp[i - 1][j];
// for (int i = 0; i <= dd.x; i++)
// {
// for (int j = 0; j <= dd.y; j++)
// {
// cout << qp[i][j] << " ";
// }
// cout << endl;
// }
//
// cout << endl;
}
}
}
cout << qp[dd.x][dd.y];
return 0;
}
求各位大佬看看