func_code_string: #include <bits/stdc++.h>   using namespace std;   const double pi = 3.141592653589793238463;   int x[1009], y[1009], t[1009];   double p[1009];   double dp[1009][1009];   int n;   double sol(int i, int prev) {     if (i == n) return 0;     if (dp[i][prev] == dp[i][prev]) return dp[i][prev];     bool can = true;     if (prev == n)       can = true;     else {       int dt = t[i] - t[prev];       int dx = abs(x[i] - x[prev]);       int dy = abs(y[i] - y[prev]);       can = (dt >= hypot(dx, dy));     }     if (!can) return dp[i][prev] = sol(i + 1, prev);     return dp[i][prev] = max(sol(i + 1, prev), p[i] + sol(i + 1, i));   }   struct target {     int x, y, t;     double p;     bool operator<(const target &other) const { return t < other.t; }   };   int main() {     cin.tie(0);     cin.sync_with_stdio(0);     cin >> n;     vector<target> v;     for (int i = 0; i < (n); i++) {       int x, y, t;       cin >> x >> y >> t;       double p;       cin >> p;       v.push_back({x, y, t, p});     }     sort(v.begin(), v.end());     for (int i = 0; i < (n); i++)       x[i] = v[i].x, y[i] = v[i].y, t[i] = v[i].t, p[i] = v[i].p;     memset((dp), (-1), sizeof(dp));     printf( %.10f n , sol(0, n));     return 0;   }   