func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline T Abs(const T& x) {     return x < 0 ? -x : x;   }   template <class T>   inline T Sqr(const T& x) {     return x * x;   }   const int maxn = 110;   const int maxk = 210;   double a[maxn][maxn][maxk];   int n, k;   int Get(int l, int r, int pos) {     if (pos < l || pos > r) {       return pos;     } else {       return l + r - pos;     }   }   int main() {     ios_base::sync_with_stdio(false);     cin >> n >> k;     vector<int> p(n);     for (int i = 0; i < n; ++i) {       cin >> p[i];     }     for (int i = 0; i < n; ++i) {       for (int j = 0; j < n; ++j) {         a[i][j][0] = (i < j ? 1.0 : 0.0);       }     }     double cnt = 0;     for (int i = 0; i < n; ++i) {       for (int j = i; j < n; ++j) {         cnt += 1.0;       }     }     for (int iter = 1; iter <= k; ++iter) {       for (int i = 0; i < n; ++i) {         for (int j = 0; j < n; ++j) {           a[i][j][iter] = 0;           for (int l = 0; l < n; ++l) {             for (int r = l; r < n; ++r) {               int i1 = Get(l, r, i);               int j1 = Get(l, r, j);               a[i][j][iter] += 1 / cnt * a[i1][j1][iter - 1];             }           }         }       }     }     double ans = 0.0;     for (int i = 0; i < n; ++i) {       for (int j = i + 1; j < n; ++j) {         if (p[i] < p[j]) {           ans += a[j][i][k];         } else {           ans += a[i][j][k];         }       }     }     printf( %.12lf n , ans);     return 0;   }   