func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, k;   double dp[205][35][35];   vector<int> p;   pair<int, int> rev(int x, int y, int rx, int ry) {     if (x >= rx && x <= ry) {       x = rx + (ry - rx) - (x - rx);     }     if (y >= rx && y <= ry) {       y = rx + (ry - rx) - (y - rx);     }     return make_pair(x, y);   }   int main() {     cin >> n >> k;     p.resize(n);     for (int i = 0; i < n; i++) {       cin >> p[i];     }     for (int i = 0; i < n; i++) {       for (int j = i; j < n; j++) {         dp[0][i][j] = 1.0;       }     }     double pp = 2.0 / (n * (n + 1));     for (int q = 1; q <= k; q++) {       for (int i = 0; i < n; i++) {         for (int j = i; j < n; j++) {           for (int k = 0; k < n; k++) {             for (int l = k; l < n; l++) {               pair<int, int> xy = rev(i, j, k, l);               if (xy.first < xy.second) {                 dp[q][i][j] += dp[q - 1][xy.first][xy.second] * pp;               } else {                 dp[q][i][j] += (1.0 - dp[q - 1][xy.second][xy.first]) * pp;               }             }           }         }       }     }     double ans = 0;     for (int i = 0; i < n; i++) {       for (int j = i + 1; j < n; j++) {         if (p[i] < p[j]) {           ans += 1.0 - dp[k][i][j];         } else {           ans += dp[k][i][j];         }       }     }     printf( %.9lf n , ans);     return 0;   }   