ConcursC++17

biperm

Pentru un număr natural nenul n, să considerăm toate numerele naturale nenule mai mici sau egale cu n, luând fiecare număr de câte două ori: 1, 1, 2, 2, 3, 3, ... , n, n. Aceste numere le amestecăm aleator, şi le aranjăm pe două linii a câte n elemente. Structura astfel obţinută o vom numi o bipermutare. În figurile 1, 2 şi 3 avem câte un exemplu de bipermutare pentru n=5.

O bipermutare este perfectă, dacă ambele linii ale structurii reprezintă câte o permutare (vezi figurile 2 şi 3).

Prin mutare pe poziţia p, înţelegem interschimbarea elementelor de pe aceeaşi coloană p. În exemplele de mai jos, bipermutarea perfectă din figura 2 s-a obţinut din bipermutarea din figura 1, aplicând o mutare pe poziţa 2. Bipermutarea perfectă din figura 3 s-a obţinut din bipermutarea din figura 1, aplicând mutări pe poziţiile 1, 2, 4 şi 5.

Figura 1 din enunțul original al problemei biperm.Figura 1 din enunțul original al problemei biperm.Mărește schema ↗

Cerinţe

Cunoscând o bipermutare, determinaţi:

  • numărul bipermutărilor perfecte distincte ce se pot obţine prin mutări;
  • numărul minim de mutări prin care se poate obţine o bipermutare perfectă;
  • o bipermutare perfectă obţinută din bipermutarea iniţială.

Date de intrare

Fişierul de intrare biperm.in conţine pe prima linie valoarea lui n. Următoarele două linii conţin, fiecare, câte n elemente separate prin câte un spaţiu, formând o bipermutare.

Date de ieşire

Fişierul de ieşire biperm.out va conţine:

  • pe prima linie două numere naturale separate printr-un spaţiu, reprezentând numărul bipermutărilor perfecte distincte ce se pot obţine din bipermutarea dată, respectiv numărul minim de mutări prin care se poate obţine o bipermutare perfectă;
  • pe următoarele două linii se vor tipări câte n numere separate prin spaţiu, reprezentând o bipermutare perfectă obţinută din bipermutarea dată.

Restricţii şi precizări

  • 2 < n ≤ 10 000;
  • calculul corect al numărului bipermutărilor perfecte distincte valorează 30% din punctaj;
  • calculul corect al numărului minim de mutări valorează 10% din punctaj;
  • tipărirea unei bipermutări perfecte valorează 60% din punctaj. Pot exista mai multe soluţii, se va admite orice soluţie corectă;
  • se garantează că numărul bipermutărilor perfecte distincte nu depăşeşte 2 000 000 000 pentru niciun test.
  • acordarea punctajului la un răspuns corect este condiţionată de existenţa răspunsurilor anterioare, indiferent de corectitudinea lor;
  • pentru 40% din teste n ≤ 20
  • pentru 40% din teste 20 < n ≤ 400
  • pentru 20% din teste 400 < n ≤ 10 000

Exemplu

biperm.in

5
1 5 5 3 4
3 2 2 4 1

biperm.out

4 1
1 2 5 3 4
3 5 2 4 1

Explicații

Sunt 4 permutări perfecte. Numărul minim de mutări este 1 şi există două soluţii cu număr minim de mutări:

1 2 5 3 4             1 5 2 3 4
3 5 2 4 1     şi      3 2 5 4 1

Celelalte două soluţii, ce nu se obţin din număr minim de mutări sunt:

3 2 5 4 1             3 5 2 4 1
1 5 2 3 4     şi      1 2 5 3 4

Pentru a treia cerinţă oricare dintre cele 4 soluţii este acceptată.

Sursă și autori

OJI 2013, clasele 11, 12. Szabo Zoltan.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑