Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | twinperms.in, twinperms.out | Sursă | Algoritmiada 2022, Runda 1 |
Autor | Tinca Matei | Adăugată de | |
Timp execuţie pe test | 0.125 sec | Limită de memorie | 262144 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Twinperms
Zi-mi ce alegi: ori ne-apărăm spatele, ori ni-l înjunghiem
Georgian şi Ştefan, căutând în 3 camere din casă, au găsit două permutări gemene, p şi q, de mărime N. Atunci când cineva interschimba elementele de pe poziţiile i şi j dintr-o permutare, în paralel se interschimbau şi elementele de pe aceleaşi poziţii în cealaltă permutare. De exemplu, dacă cele două permutări sunt: p = [2, 1, 3] şi q = [3, 2, 1], atunci prin interschimbarea elementelor de pe poziţiile 1 şi 3, atunci permutările devin p = [3, 1, 2] şi q = [1, 2, 3]. Ei pot aplica oricâte interschimbări de acest fel.
Şi Georgian şi Ştefan vor să îşi minimizeze numărul de inversiuni al permutărilor fiecăruia, dar pentru că de fiecare dată când cineva schimbă ceva la o permutare, se schimbă şi în cealaltă, atunci ei s-au decis să facă astfel încât numărul de inversiuni în total din ambele permutări să fie cât mai mic.
Cerinţă
Dându-se două permutări de mărime N, calculaţi suma minimă a numărului de inversiuni din cele două permutări după ce se aplică operaţia de interschimbare descrisa mai sus de oricâte ori.
Date de intrare
Fişierul de intrare twinperms.in, pe prima linie se găseşte numărul N, ce reprezintă mărimile celor două permutări.
Pe următoarele două linii se află câte N elemente, reprezentând cele două permutări p şi q.
Date de ieşire
În fişierul de ieşire twinperms.out se va afişa un singur număr ce reprezintă suma minimă a numărului de inversiuni din cele două permutări.
Restricţii
- Permutările sunt indexate de la 1 până la N.
- 1 ≤ N ≤ 500.000.
- Pentru 10 de puncte, avem pi = qi pentru toate i, unde 1 ≤ i ≤ N.
- Pentru alte 10 de puncte, avem pi + qi = N + 1 pentru toate i, unde 1 ≤ i ≤ N.
- Pentru alte 10 puncte, avem 1 ≤ N ≤ 10.
- Pentru alte 15 puncte, avem 1 ≤ N ≤ 18.
- Pentru alte 35 de puncte, avem 1 ≤ N ≤ 1.000.
- O permutare de mărime N este un şir de N elemente unde fiecare număr de la 1 până la N apare exact o dată.
- Numărul de inversiuni dintr-o permutare p este numărul de perechi i, j, unde 1 ≤ i < j ≤ N, cu proprietatea că pi > pj.
Exemplu
twinperms.in | twinperms.out |
---|---|
4 3 4 1 2 1 4 2 3 | 4 |
Explicaţie
Dacă interschimbăm elementele de pe poziţiile 2 şi 4, o să obţinem permutările p = [3, 2, 1, 4] şi q = [1, 3, 2, 4]. Cum p are 3 inversiuni, iar q are o inversiune, suma totală este de 4 inversiuni. Aceasta este suma minimă.