func_code_string: #include <bits/stdc++.h>   using namespace std;   const double inf = 1e10;   inline int cmp(double x, double y = 0, double tol = 1e-7) {     return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;   }   struct ball {     double x, v, m;     int id;     ball(double x = 0.0, double v = 0.0, double m = 0.0) : x(x), v(v), m(m) {}     bool operator<(const ball &q) const { return cmp(x, q.x) < 0; }   };   bool comp(ball a, ball b) { return a.id < b.id; }   ball p[100];   int n, T;   inline double calcula(double m1, double m2, double v1, double v2) {     return ((m1 - m2) * v1 + 2 * m2 * v2) / (m1 + m2);   }   void solve() {     double t = 0.0;     while (cmp(t, T) < 0) {       double time = inf;       for (int i = 0; i < n - 1; i++) {         int j = i + 1;         if (cmp(p[i].v - p[j].v) == 0) continue;         double tmp = (p[j].x - p[i].x) / (p[i].v - p[j].v);         if (cmp(tmp) <= 0) continue;         time = min(time, tmp);       }       if (cmp(time, inf) == 0 || cmp(T, t + time) <= 0) break;       for (int i = 0; i < n; i++) p[i].x = p[i].x + time * p[i].v;       for (int i = 0; i < n - 1; i++) {         int id1 = i, id2 = i + 1;         if (cmp(p[id1].x, p[id2].x) != 0) continue;         double aux = p[id1].v;         p[id1].v = calcula(p[id1].m, p[id2].m, p[id1].v, p[id2].v);         p[id2].v = calcula(p[id2].m, p[id1].m, p[id2].v, aux);       }       t += time;     }     for (int i = 0; i < n; i++) p[i].x = p[i].x + (T - t) * p[i].v;   }   int main() {     cin >> n >> T;     for (int i = 0; i < n; i++) {       scanf( %lf %lf %lf , &p[i].x, &p[i].v, &p[i].m);       p[i].id = i;     }     sort(p, p + n);     solve();     sort(p, p + n, comp);     for (int i = 0; i < n; i++) printf( %.9lf n , p[i].x);     return 0;   }   