Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2020-02-19 00:39:36.
Revizia anterioară   Revizia următoare  
Bad macro "include(page="template/taskheader" task_id="cheerleader") == Majoretele din şcoala lui Pătrăţel au hotărât să creeze o nouă manifestaţie artistică pentru cupa de Fo(1)tbal a şcolii. Sunt $2^N^$ majorete, fiecare cu înălţimi *distincte* între $0$ şi $2^N^ - 1$. Majoretele stau într-o linie. Înalţimea majoretei care este iniţial la pozitia $i$ este $h[i]$ pentru $1 &le; i &le; 2^N^$. Majoretele ştiu doua manevre sincronizate de dans: * _Marele swap_. În manevra aceasta, primele $2^N-1^$ majorete fac schimb de locuri cu ultimele $2^N-1^$ majorete. * _Marele split_. În manevra aceasta, majoretele situate la poziţii impare se duc la începutul rândului, si cele situate la poziţii pare se duc la sfârşitul rândului. De exemplu, un _mare swap_ efectuat de majoretele $A, B, C, D, E, F, G, H$ va rezulta in randul $E, F, G, H, A, B, C, D$, şi un _mare split_ efectuat de aceleasi majorete rezulta in randul $A, C, E, G, B, D, F, H$. Definim numărul de inversiuni ale unui rând de majorete cu înălţimile $h'[1], ..., h'[2^N^]$ ca fiind numărul de perechi $(i, j), 1 &le; i < j &le; 2^N$ unde $h'[i] > h'[j]$. Majoretele vor să găsească o secvenţă de manevre care minimizeaza numărul de inversiuni ale rândului rezultant. h2. Fisier de intrare Pe prima linie a fisierului de intrare $cheerleader.in$ veţi găsi numărul întreg $N$. Pe a doua linie a fisierului de intrare veţi găsi $2^N^$ numere întregi ce reprezintă $h[1], ..., h[2^N^]$. h2. Fisier de iesire Pe primul rând al fisierului de iesire $cheerleader.out$ se va afla numărul minim de inversiuni. Pe al doilea rând al outputului se va afla un şir de caractere ce reprezintă o secvenţă de manevre care conduce la numărul minim de inversiuni. Un caracter $1$ va reprezenta un _mare swap_, iar un caracter $2$ va reprezenta un _mare split_. Orice secvenţă de manevre care duce la numărul minim de inversiuni va fi acceptată. * $0 &le; N &le; 17$. * $\mathbf{N}$ \textbf{poate fi 0}. * Dacă se afişează numărul minim de inversiuni corect, dar secvenţa de manevre nu este corectă, se vor primi $X$ puncte. Valoarea lui $X$ variază de la subtask la subtask. * Lungimea secvenţei de manevre trebuie să fie de cel mult $500.000$. * Pentru $16$ puncte, $N &le; 4$, $X = 8$. * Pentru $10$ puncte, $N &le; 7$, $X = 5$. * Pentru $25$ puncte, $N &le; 11$, $X = 20$. * Pentru $21$ puncte, $N &le; 16$, se garantează că numărul minim de inversiuni ce poate fi obţinut este 0, si $X = 0$. * Pentru ultimele $28$ de puncte, $X = 21$. h2. Exemple table(example). |_. cheerleader.in |_. cheerleader.out | |2 0 3 1 2 |1 2212 | |3 2 3 7 6 1 4 5 0 |8 21221 | |4 1 4 8 5 3 6 12 13 10 11 2 9 14 0 15 7 |43 2222 | == include(page="template/taskfooter" task_id="cheerleader")"