Amețit după petrecerea răufăcătorilor, Mojo Jojo s-a dus la Profi să își cumpere banane numerotate cu indici distincți de la la (acestea formează o permutare). Cu cât indicele unei banane este mai mare, cu atât banana este mai gustoasă. Ca orice altă maimuță de speță nobilă, Mojo Jojo preferă să păstreze ce e mai bun la sfârșit. Din acest motiv, acesta și-ar dori să le mănânce în ordine de la banana cu indicele cel mai mic (banana cu indicele ), până la banana cu indicele .
Din păcate, Mojo este mult prea amețit ca să stea să sorteze banane după bunul plac, motiv pentru care le va mânca în ordinea în care le-a cumpărat. Fiind un geniu în bananologie, Mojo a definit costul unei astfel de permutări ca fiind numărul de inversiuni. Înainte de a se apuca de mâncat, Mojo s-a hotărât să minimizeze numărul de inversiuni ale permutării având la dispoziție două tipuri de operații:
- Monkey Shot: Mojo alege două elemente consecutive din permutare și le inversează
- Monkey Punch: Mojo dă cu pumnul în masă și toate bananele se permută random cu probabilitate uniformă (se dă random shuffle la permutare)
Deși Mojo Jojo este un geniu în algoritmică și programare competitivă, acesta nu se simte suficient de bine cât să deducă o strategie optimă de minimizare a numărului de inversiuni într-o permutare. Dându-se un număr natural , Mojo Jojo poate să aplice maxim operații descrise mai sus. Calculați expected value ale numărului de inversiuni dacă Mojo ar aplica o strategie optimă.
Date de intrare
Fișierul de intrare mojosort.in
conține pe prima linie , reprezentând numărul de teste. Urmează apoi perechi de linii: pe prima dintre acestea se citesc două numere întregi și , cu semnificația din enunț, iar pe cea de a doua linie se citesc numere întregi distincte, despărțite prin câte un spațiu, reprezentând indicii bananelor în ordinea în care le-a cumpărat Mojo Jojo.
Date de ieșire
Fișierul de ieșire mojosort.out
va conține răspunsul pentru fiecare din cele teste. Puteți alege să afișați aceste numere în două moduri:
- mojo-mode: afișați un număr , unde prin s-a notat inversul modular al lui față de , iar răspunsul este , cu și numere naturale, prime între ele
- jojo-mode: afișați un număr real reprezentând răspunsul exact cu o eroare de cel mult
Dacă alegeți să afișați în mojo-mode vreun rezultat, afișați pe prima linie a fișierului mesajul mojo
. Altfel, afișați mesajul jojo
. Toate cele rezultate trebuie afișate conform modelului selectat.
Restricții și precizări
- Dacă alegeți jojo-mode veți obține din punctajul testului respectiv.
- Pentru din teste avem şi .
Exemplu
mojosort.in
2
3 2
3 1 2
3 1
3 2 1
mojosort.out
jojo
0.000000
1.500000
mojosort.in
2
3 2
3 1 2
3 1
3 2 1
mojosort.out
mojo
0
500000005
Explicaţie
În primul test, Mojo poate interschimba pozițiile și , obținând permutarea . Această permutare are inversiuni.
În al doilea test, Mojo rearanjează aleatoriu permutarea, iar numărul mediu de inversiuni este .
modulo