#include <bits/stdc++.h>
#define double long double
using namespace std;
int n, m, x, y;
double f[50005], a[1005][1005];
void gauss(int n){
for(int i = 1; i < n; i++){
if(i < n) a[i][i + 1] /= a[i][i];
a[i][i - 1] /= a[i][i], a[i][n + 1] /= a[i][i], a[i][i] = 1;
a[i + 1][n + 1] -= a[i][n + 1] * a[i + 1][i], a[i + 1][i + 1] -= a[i][i + 1] * a[i + 1][i], a[i + 1][i] = 0;
}
f[n] = a[n][n + 1] / a[n][n];
for(int i = n - 1; i >= 1; i--)
a[i][n + 1] -= a[i][i + 1] * f[i + 1], f[i] = a[i][n + 1];
}
int main(){
cin >> n >> m >> x >> y, n = n - x + 1;
if(m == 1) return cout << (n - 1) * 2, 0;
for(int i = 1; i < n; i++){
a[1][1] = 2, a[1][2] = -1, a[1][m + 1] = f[1] + 3;
a[m][m] = 2, a[m][m - 1] = -1, a[m][m + 1] = f[m] + 3;
for(int j = 2; j < m; j++)
a[j][j] = 3, a[j][j - 1] = a[j][j + 1] = -1, a[j][m + 1] = f[j] + 4;
gauss(m);
}
printf("%.12Lf", f[y]);
return 0;
}
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |
19. Remove Nth Node From End of List | 925. Long Pressed Name |
1051. Height Checker | 695. Max Area of Island |