func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps(1e-8), Inf(1e10);   const double pi(3.14159265358979);   const int N = 6060;   struct point {     double x, y;   } p[N + N] = {};   int n, q, k = 0, a, b, x[N] = {};   double ans[N] = {};   void init() {     cin >> n >> q >> a >> b;     for (int i = 1; i <= n; ++i) cin >> x[i];   }   void work() {     p[++k] = {1.0, 2.0 * (-x[1])};     p[++k] = {Inf, 2.0 * (Inf - x[1])};     ans[1] = x[1];     double zero = x[1];     for (int i = 2, d = 1; i <= n; ++i) {       for (int j = k; j > d; --j) p[j + 2] = p[j];       k += 2;       p[d + 1] = {zero, 0};       p[d + 2] = {zero, 0};       for (int j = 1; j <= d + 1; ++j) p[j].x += a;       for (int j = d + 2; j <= k; ++j) p[j].x += b;       for (int j = 1; j <= k; ++j) p[j].y += 2 * (p[j].x - x[i]);       if (p[1].y > 0)         zero = p[1].x, d = 0;       else {         for (d = 1; p[d].y * p[d + 1].y > 0; ++d)           ;         zero = (-p[d].y) / (p[d + 1].y - p[d].y) * (p[d + 1].x - p[d].x) + p[d].x;       }       ans[i] = zero;     }     ans[n] = min<double>(ans[n], q);     for (int i = n - 1; i >= 1; --i) {       ans[i] = max(ans[i + 1] - b, ans[i]);       ans[i] = min(ans[i + 1] - a, ans[i]);     }     double sum = 0;     for (int i = 1; i <= n; ++i) sum += (x[i] - ans[i]) * (x[i] - ans[i]);     for (int i = 1; i <= n; ++i) printf( %.6f  , ans[i]);     printf(  n%.6f n , sum);   }   int main() {     init();     work();     return 0;   }   