func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 100;   long long BIT[6][N];   int n, arr[N];   inline long long getPrefix(int z, int i) {     i = n - i - 1;     ++i;     long long ret = 0;     while (i) ret += BIT[z][i], i -= i & -i;     return ret;   }   inline void add(int z, int i, long long v) {     i = n - i - 1;     ++i;     while (i < N) BIT[z][i] += v, i += i & -i;   }   long long f(long long x) { return x * (x + 1) / 2; }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; ++i) scanf( %d , &arr[i]), arr[i]--;     double out = 0;     double fn = f(n);     for (int j = 0; j < n; j++) {       double i = getPrefix(0, arr[j]);       double i1 = getPrefix(1, arr[j]);       double fi = getPrefix(2, arr[j]);       double fni = getPrefix(3, arr[j]);       double ci = getPrefix(4, arr[j]);       double temp = ci * f(n - j - 1) / fn;       temp += (fni - ci * f(n - j - 1)) / fn;       temp += (i1 * j - fi * 2) / fn;       temp += fi / fn;       out += temp;       add(0, arr[j], j);       add(1, arr[j], j + 1);       add(2, arr[j], f(j));       add(3, arr[j], f(n - j - 1));       add(4, arr[j], 1);     }     for (long long len = 1; len <= n; len++)       out += len * (len - 1) / 4.0 * (n - len + 1) / fn;     printf( %.9lf n , out);   }   