Fişierul intrare/ieşire:turnuri.in, turnuri.outSursăOJI 2018 clasa a 6-a
AutorCristina IordaicheAdăugată defrancuCristian Francu francu
Timp execuţie pe test1 secLimită de memorie16384 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

Vezi solutiile trimise

Turnuri (clasa a 6-a)

Într-un laborator cibernetic se fac experimente cu roboţi. Pe o bandă de lucru se află aşezate unul lângă altul, N cuburi galbene şi albastre, numeroate în ordine cu valori de la 1 la N. Pentru fiecare cub se cunoaşte latura acestuia, exprimată în centimetri, şi culoarea, codificată prin simbolul g (pentru galben) sau a (pentru albastru).

Un robot inteligent este programat să construiască turnuri prin aşezarea cuburilor unul peste altul. El se află în faţa benzii de lucru, analizează fiecare cub în ordine, de la primul la ultimul, şi procedează astfel:

  • dacă este primul cub, îl lasă la locul lui pe bandă;
  • aşază cubul numerotat cu K peste cubul numerotat cu K-1 doar dacă el are culoarea diferită şi latura mai mică decât cubul K-1. Această operaţie se efectuează în cazul în care cubul K-1 se află deja într-un turn construit anterior sau dacă el a rămas în poziţia iniţială. În cazul în care cubul K nu poate fi aşezat peste cubul K-1, el rămâne la locul lui.

Cerinţe

Ştiind că un turn poate fi format din cel puţin un cub, scrieţi un program care să determine:

  1. numărul final T al turnurilor de pe bandă şi H, înălţimea celui mai înalt turn care se poate forma, exprimată în centimetri;
  2. cel mai mare număr de cuburi Nmax ce pot forma un turn, dacă cele N cuburi ar putea fi rearanjate iniţial pe bandă, unul lângă altul.

Date de intrare

Fişierul de intrare turnuri.in conţine:

  • pe prima linie un număr natural C care reprezintă numărul cerinţei şi poate fi 1 sau 2.
  • pe cea de-a doua linie un număr natural N ce reprezintă numărul cuburilor de pe bandă;
  • pe fiecare dintre următoarele N linii, câte un număr natural care reprezintă latura unui cub, urmat de un spaţiu şi simbolul g sau a, pentru codificarea culorii cubului.

Date de ieşire

În fişierul de ieşire turnuri.out va conţine pentru cerinţa 1 (C=1) pe prima linie două valori, separate printr-un spaţiu, ce reprezintă T şi H. Pentru cerinţa 2 (C=2) fişierul va conţine pe prima linie numărul Nmax.

Restricţii

  • 1≤ N ≤ 10 000 şi 1 ≤ latura unui cub ≤ 500 000;
  • nu există două cuburi cu laturi egale;
  • se acordă 10 puncte din oficiu. Pentru rezolvarea corectă a primei cerinţe se acordă 30 de puncte, pentru rezolvarea corectă a celei de-a doua cerinţe se acordă 60 de puncte.

Exemplu

turnuri.inturnuri.outExplicaţie
1
6
18 a
13 g
15 a
10 a
8 g
2 a
3 31
Se va rezolva cerinţa 1.
Al doilea cub se aşază peste primul şi formează un turn cu înălţimea de 31 de centimetri.
Al treilea cub formează singur un turn cu înălţimea 15 centimetri. Ultimele trei cuburi formează
un turn cu înălţimea 20 de centimetri. Numărul turnurilor este 3.
Înălţimea celui mai înalt turn este de 31 de centimetri.
2
6
18 a
13 g
15 a
10 a
8 g
2 a
5
Se va rezolva cerinţa 2. O posibilă rearanjare a cuburilor ar fi următoarea:
 
Primele 5 cuburi formează un turn.
Trebuie sa te autentifici pentru a trimite solutii. Click aici