func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double INF = 1e9;   const long double EPS = 1e-9;   long double dist(long double x1, long double y1, long double x2,                    long double y2) {     return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));   }   long double func(long double X, long double Y, long double L, long double R) {     return min(dist(L, 0, X, Y), dist(R, 0, X, Y)) + R - L;   }   int main() {     cout.setf(ios::fixed);     cout.precision(15);     int n, k;     cin >> n >> k;     k--;     vector<int> x(n);     for (int i = 0; i < n; i++) cin >> x[i];     int X, Y;     cin >> X >> Y;     int xStart;     if (k < n) xStart = x[k];     sort(x.begin(), x.end());     if (k == n) {       cout << func(X, Y, x[0], x[n - 1]);       return 0;     }     k = lower_bound(x.begin(), x.end(), xStart) - x.begin();     long double ans = INF;     for (int i = 0; i < n; i++) {       long double cur1 =           min(x[k] - x[0] + x[i] - x[0] + dist(x[i], 0, X, Y),               abs(x[i] - x[k]) + x[i] - x[0] + dist(x[0], 0, X, Y));       if (i + 1 < n) cur1 += func(X, Y, x[i + 1], x[n - 1]);       long double cur2 =           min(x[n - 1] - x[k] + x[n - 1] - x[i] + dist(x[i], 0, X, Y),               abs(x[k] - x[i]) + x[n - 1] - x[i] + dist(x[n - 1], 0, X, Y));       if (i - 1 >= 0) cur2 += func(X, Y, x[0], x[i - 1]);       ans = min(ans, min(cur1, cur2));     }     cout << ans <<   n ;     return 0;   }   