func_code_string: #include <bits/stdc++.h>   using namespace std;   double DP[2][2510][2510];   double X[2510], Y[2510];   double dis(int a, int b) {     return sqrt((X[a] - X[b]) * (X[a] - X[b]) + (Y[a] - Y[b]) * (Y[a] - Y[b]));   }   int main() {     ios::sync_with_stdio(false);     memset(DP, 0, sizeof(DP));     int N;     cin >> N;     for (int i = 0; i < N; i++) cin >> X[i] >> Y[i];     for (int i = 2; i <= N; i++) {       for (int s = 0; s < N; s++) {         int e = s + i - 2;         e %= N;         int t;         t = (s - 1 + N) % N;         DP[0][t][e] = max(DP[0][t][e], DP[0][s][e] + dis(s, t));         t = (e + 1) % N;         DP[1][s][t] = max(DP[1][s][t], DP[0][s][e] + dis(s, t));         t = (s - 1 + N) % N;         DP[0][t][e] = max(DP[0][t][e], DP[1][s][e] + dis(e, t));         t = (e + 1) % N;         DP[1][s][t] = max(DP[1][s][t], DP[1][s][e] + dis(e, t));       }     }     double res = 0;     for (int i = 0; i < N; i++) {       int j = (i - 1 + N) % N;       res = max(res, DP[0][i][j]);       res = max(res, DP[1][i][j]);     }     cout.precision(20);     cout << res << endl;     return 0;   }   