func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline void chkmin(T &a, T b) {     if (a > b) a = b;   }   template <class T>   inline void chkmax(T &a, T b) {     if (a < b) a = b;   }   int n;   double q0, a0, b0;   double y_best[6000], x[6000], chain[6000];   double quad_min(double a, double b, double c) { return -b / (2.0 * a); }   double bound(double h, double v) { return max(1.0 + h, min(q0, v)); }   void pull_chain(int j0, double h, double a, double b, double c,                   double &res_yopt, int &res_j) {     for (int j = j0; j >= 0; j--) {       double yi_nat = bound(h, quad_min(a, b, c));       if (y_best[j] < yi_nat - h - b0) {         double ny = x[j] + h + b0;         chain[j] = b0;         h += b0;         a += 1.0;         b += -2.0 * ny;         c += ny * ny;       } else if (y_best[j] > yi_nat - h - a0) {         double ny = x[j] + h + a0;         chain[j] = a0;         h += a0;         a += 1.0;         b += -2.0 * ny;         c += ny * ny;       } else {         res_yopt = yi_nat;         res_j = j;         return;       }     }     res_yopt = bound(h, quad_min(a, b, c));     res_j = -1;   }   void fill_in_y(int i) {     while (i >= 0) {       double anything;       int j;       pull_chain(i - 1, 0.0, 1.0, -2.0 * x[i], x[i] * x[i], anything, j);       for (int k = i - 1; k > j; k--) {         y_best[k] = y_best[k + 1] - chain[k];       }       i = j;     }   }   int main() {     scanf( %d%lf%lf%lf , &n, &q0, &a0, &b0);     for (int i = 0; i < n; i++) scanf( %lf , &x[i]);     for (int i = 0; i < n; i++) y_best[i] = x[i];     for (int i = 0; i < n; i++) chain[i] = 0.0;     for (int i = 1; i < n; i++) {       double yopt;       int j;       pull_chain(i - 1, 0.0, 1.0, -2.0 * x[i], x[i] * x[i], yopt, j);       y_best[i] = yopt;     }     fill_in_y(n - 1);     double total = 0.0;     for (int i = 0; i < n; i++) {       total = total + (y_best[i] - x[i]) * (y_best[i] - x[i]);     }     for (int i = 0; i < n; i++) {       printf( %.8f  , y_best[i]);     }     printf(  n%.8lf n , total);     return 0;   }   