#include #include using namespace std; double prec[101][10001]; int main() { int T; cin >> T; cout << fixed << setprecision(15); prec[0][0] = 1; for (int i = 1; i <= 100; i++) { for (int j = 0; j <= (i - 1) * (i - 2) / 2; j++) { for (int k = 0; k < i; k++) prec[i][j + k] += prec[i - 1][j] / (i + 0.0); } } while (T) { T--; int n; long long k; cin >> n >> k; int a[200]; for (int i = 0; i < n; i++) cin >> a[i]; int cnt = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (a[i] > a[j]) cnt++; } } if (k > n * (n - 1) / 2) cout << 0.0 << endl; else { double expected = 0; for (int j = 0; j <= (n - 1) * n / 2; j++) { expected += j * prec[n][j]; } int it = 0; double sum = 0; double prob2 = 0; double prob = 1 - prec[n][0]; int p = 1; //cout << expected << endl; for (int i = 1; i <= k; i++) { while (it < n * (n - 1) / 2) { if (it + 1 - i > expected) break; it++; sum += it * prec[n][it]; prob -= prec[n][it]; prob2 += prec[n][it]; } while (it - i > expected) { sum -= it * prec[n][it]; prob += prec[n][it]; prob2 -= prec[n][it]; it--; } while ((p <= it) && (p <= i)) { sum -= p * prec[n][p]; prob2 -= prec[n][p]; p++; } if (i == k) break; expected = sum - i * prob2 + expected * prob; //cout << i << " " << it << " " << expected << endl; } if ((cnt <= it) || (!k)) cout << max(0 + 0.0, cnt - k + 0.0) << endl; else cout << expected << endl; } } // system("pause"); return 0; }