.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » cubinvers

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
 .campion
cubinvers


Timp maxim de execuţie/test:
2.2 secunde
Memorie totală disponibilă/stivă:
2 MB/1 MB

Ana si Barbu se joacă din nou. Acum ei au n cuburi. Pe fiecare cub este scris un număr natural cuprins între 1 şi n, astfel încât oricare două cuburi au numere diferite.
Pe tabla de joc este desenat un şir format din n patrate, numerotate de la stânga la dreapta de la 1 la n. În aceste pătrate pot fi plasate cuburi, un singur cub într-un pătrat.
Iniţial, Ana pune pe tabla de joc nişte cuburi, în unele dintre pătrate. Apoi Barbu are voie să aşeze cuburile rămase în pătratele rămase, aşa cum doreşte el.
După ce toate cuburile sunt aşezate pe tabla de joc, Ana trebuie să execute cât timp este posibil operaţii de tipul următor: "dacă numărul scris pe ultimul cub (cel aflat pe tablă în pătratul cu numărul n) este x, atunci secvenţa formată din ultimele x cuburi se inversează".
Evident, jocul se termină când în pătratul cu numărul n se va afla pătratul cu numărul 1.

De exemplu, să considerăm că în joc există n=5 cuburi. Iniţial, Ana plasează cuburile cu numerele 2 şi 3 în pătratele 5 şi respectiv 3.
Configuraţia iniţială a tablei de joc este 00302 (cu 0 am marcat un patrat gol).
Barbu analizează tabla de joc şi aşează cuburile rămase astfel: 41352
In acest caz Ana va trebui să facă 5 operaţii:
41325
52314
54132
54123
54321

Şi jocul s-a încheiat.

Cerinţă

Scrieţi un program care să îl ajute pe Bogdan să aşeze cuburile astfel încât Ana să facă un număr maxim de operaţii.

Date de intrare

Fişierul de intrare cubinvers.in conţine pe prima linie numărul natural n. Pe cea de a doua linie sunt scrise n numere naturale separate prin spaţiu reprezentând configuraţia iniţială a tablei de joc (0 semnifică un pătrat gol, o valoare diferită de 0 reprezintă numărul cubului plasat în pătratul corespunzător).

Date de ieşire

Fişierul de iesire cubinvers.out va conţine două linii. Pe prima linie va fi scris numărul maxim de operaţii pe care le va executa Ana pentru configuraţia construită de Bogdan. Pe cea de a doua linie vor fi scrise n numere naturale distincte cuprinse între 1 şi n, separate prin câte un spaţiu, reprezentând configuraţia construită de Bogdan, pentru care Ana face număr maxim de operaţii. Al i-lea număr de pe cea de-a doua linie reprezintă numărul cubului plasat pe tabla de joc în pătratul i.

Restricţii

  • 1 <= n <= 25
  • Configuraţia iniţială din fişierul de intrare conţine cel mult 10 pătrate goale.
  • Dacă există mai multe soluţii posibile, puteţi afişa oricare dintre acestea.

Exemplu

cubinvers.in cubinvers.out
5
0 0 3 0 2

5
4 1 3 5 2

prof. Marinel Şerban
Liceul de Informatică „Grigore Moisil” Iaşi
marinel_serban@yahoo.com
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2009: efort, muzeu, bal, seti, basm, dansatori, smith, timer, secvsir, vot, cetati, reziduu, biliard, prefix1, accesibil, dp, jocv, placa, palc, prod3, predecesor, standard, cantor, nkbiti, nori, triti, kperms, sotron1, impozit, tablite, fazan, lanturi, secvpar, tom, joker, matriosca, asociativ, lego, medalii, permutari, cfr, treegame, scanduri, site, fotbal, links, kbiti, segm, album, iepurasi, jucarii, m4, bradut, trmv, colorare, greutati, concat, graphgame, ic, echilibru, brazi, mat, mobil, distsir, parbit
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, clase, pagini, ornament, ordine, spioni1
Despre backtracking: acop, bipal, magic2, vagoane, friends, tricouri, festival, numar, pento, ro, jobs, onu2, sir3, cai1, labirint, dans, ham, sudoku, caramele, linie, puncte, castel, excursia, joc7, pattern, avere, paianjen, medii, monkey, scara1, numere8, banda1, spirala1, cofetar, gradina, placa, smin, jucarii, immortal, concat, codif, izvor, avioane, jb, prisme, triburi1, genab, dineu, antitero, ornament, virgule
Despre generare: taste, pluricex, balbe, magic3, formule, grup, zmeu, nr01, reteta2, playlist, pizza1, caramele, caini, tvshow, adevar, prime1, hexa, premii1, carti2, bile4, hof, matrx, arctir, guess, minmax, stele, tablou1, adunscad, sumprod, prisme, operatii1, expeval, triburi1, optim, patru, genab, dineu, cumpanit, nkd, relatii, wb
surse trimise | ajutor