Fişierul intrare/ieşire: | oposumi.in, oposumi.out | Sursă | ONSEPI 2021, clasa a 9-a |
Autor | Mihaela Cismaru | Adăugată de | |
Timp execuţie pe test | 0.1 sec | Limită de memorie | 32000 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Oposumi
O familie de oposumi are o vizuină cu N niveluri şi N·(N+1)/2 camere dispuse în formă de matrice triunghiulară cu N linii. În fiecare cameră poate locui un singur oposum. Vizuina a fost săpată în pământ de către oposumi, iar nivelul 1 (cel mai de sus) este cel mai apropiat de suprafaţa solului. Pe fiecare nivel I se află I camere. Dacă avem I < J, atunci nivelul I va fi poziţionat mai sus decât nivelul J, adică nivelul I va fi mai aproape de suprafaţa solului decât nivelul J. În familia de oposumi se află exact N*(N+1)/2 membri cu vârste cuprinse între 1 şi N*(N+1)/2, vârste distincte. Regula de bază în vizuina familiei de oposumi este următoarea: în camera de pe linia I şi coloana J trebuie să locuiască un oposum mai tânăr decât în camerele de pe poziţiile (I+1, J) respectiv (I+1,J+1). Un oposum de vârsta X se consideră mai tânăr decât un oposum de vârsta Y dacă X < Y. Fiecare oposum vrea să ştie care e cel mai de sus nivel pe care se poate poziţiona. Din păcate, ei nu au lăbuţele făcute să programeze, aşa că membrii familiei de oposumi vă cer vouă ajutorul.
Dându-se numărul natural N ei vă cer să răspundeţi la două întrebări:
Cerinţa 1 (50 de puncte)
Pentru fiecare oposum să se afle nivelul cel mai de sus (cel mai aproapiat de suprafaţa solului) pe care se poate afla respectând regulile de vârstă.
Cerinţa 2 (50 de puncte)
Pentru un oposum dat de vârsta K să se afişeze matricea astfel încât oposumul să stea într-o cameră pe un nivel cât mai de sus respectând regulile de vârstă.
Date de intrare
Pe prima linie a fişierului de intrare oposumi.in se găseşte numărul T ce poate avea valoarea 1 sau 2 astfel încât:
- Dacă T are valoarea 1, atunci se cere rezolvarea cerinţei 1, iar în continuare se va regăsi numărul natural N reprezentând numărul de niveluri ale vizuinii.
- Daca T are valoarea 2, atunci se cere rezolvarea cerinţei 2, iar în continuare se va regăsi numărul natural N reprezentând numărul de niveluri ale vizuinii, urmat de numărul natural K ce reprezintă vârsta oposumului ce se doreşte poziţionat pe un nivel cât mai de sus.
Date de ieşire
În fişierul de ieşire oposumi.out se cere să se tipărească:
- Pentru T = 1 se va afişa un şir de N·(N+1)/2 numere, unde cel de al I-lea număr reprezintă cel mai de sus nivel pe care se poate afla oposumul de vârstă I.
- Pentru T = 2 se vor afişa N linii, reprezentând modul în care sunt aşezaţi oposumii în vizuină în funcţie de vârstă, astfel ca oposumul de vârsta K să fie poziţionat pe un nivel cât mai de sus posibil. Pe linia I se vor afişa I numere separate prin câte un spaţiu reprezentând vârstele oposumilor aşezaţi pe nivelul I.
Restricţii
- 1 ≤ N ≤ 1000,
- 1 ≤ K ≤ N·(N+1)/2,
- Pentru cerinţa T = 2 soluţia nu este unică. Se acceptă orice soluţie corectă,
- Testele nu sunt grupate.
Exemplu
oposumi.in | oposumi.out |
---|---|
1 3 | 1 2 2 2 3 3 |
2 4 7 | 1 2 3 4 5 7 6 8 10 9 |
Cel mai de sus nivel la care poate locui un oposum este:
- Oposumul de vârsta 1 poate locui la nivelul 1 .
- Fiecare oposum cu vârsta 2, 3 sau 4 ar putea locui la nivelul 2.
- Oposumii care au vârsta 5 sau 6 vor locui la nivelul 3.
Cel mai de sus nivel, unde poate locui oposumul cu vârsta de K = 7 ani, este nivelul 3, iar o aşezare posibilă a oposumilor în camere este prezentată mai sus.