func_code_string: #include <bits/stdc++.h>   using namespace std;   int a, b, c, s;   vector<double> x, y11, z;   double rx, ry, rz, mn = -1000000000;   double mln(double x) { return log(x); }   void upd(double nx, double ny, double nz) {     if (nx + ny + nz > (s + 1e-7)) return;     double cur = 0;     if (a) cur += a * mln(nx);     if (b) cur += b * mln(ny);     if (c) cur += c * mln(nz);     if (cur > mn) {       mn = cur;       rx = nx;       ry = ny;       rz = nz;     }   }   int main() {     scanf( %d %d %d %d , &s, &a, &b, &c);     if (a == 0 && b == 0 && c == 0) {       puts( 0.0 0.0 0.0 );       return 0;     }     if (a != 0) {       double S = s;       double m = 1 + b * 1. / a + c * 1. / a;       double x0 = S / m;       x.push_back(x0);       y11.push_back(x0 * b * 1. / a);       z.push_back(x0 * c * 1. / a);     } else if (b != 0) {       double S = s;       double m = 1 + a * 1. / b + c * 1. / b;       double x0 = S / m;       x.push_back(x0 * a * 1. / b);       y11.push_back(x0);       z.push_back(x0 * c * 1. / b);     } else if (c != 0) {       double S = s;       double m = 1 + a * 1. / c + b * 1. / c;       double x0 = S / m;       x.push_back(x0 * a * 1. / c);       y11.push_back(x0 * b * 1. / c);       z.push_back(x0);     }     double S = s;     x.push_back(0);     y11.push_back(0);     z.push_back(s);     x.push_back(0);     y11.push_back(s);     z.push_back(0);     x.push_back(s);     y11.push_back(0);     z.push_back(0);     if (a + b) {       z.push_back(0);       z.push_back(0);       x.push_back(a * c / (b + a + 0.));       y11.push_back(S - a * c / (b + a + 0.));       x.push_back(b * c / (b + a + 0.));       y11.push_back(S - b * c / (b + a + 0.));     }     if (b + c) {       x.push_back(0);       x.push_back(0);       y11.push_back(b * a / (b + c + 0.));       z.push_back(S - b * a / (b + c + 0.));       y11.push_back(c * a / (b + c + 0.));       z.push_back(S - c * a / (b + c + 0.));     }     if (a + c) {       y11.push_back(0);       y11.push_back(0);       x.push_back(a * b / (c + a + 0.));       z.push_back(S - a * b / (c + a + 0.));       x.push_back(c * b / (c + a + 0.));       z.push_back(S - c * b / (c + a + 0.));     }     for (int i = 0; i < x.size(); i++) {       upd(x[i], y11[i], z[i]);     }     printf( %.11lf %.11lf %.11lf n , rx, ry, rz);     return 0;   }   