Dupa o anumita pauza, propun o problema care are deadline-ul pe 6
septembrie. Daca primesc totusi mai multe rezolvari intr-un timp mai scurt,
voi mai propune o problema. Oricum, sper ca lista se va revigora dupa data
de 6 septembrie si ca vom primi mai mult de 2 surse pentru o problema.
Va urez in continuare vacanta placuta.
Cristian Cadar
Problema de mai jos mi-a fost relatata de catre Bogdan si Mihai Stroe,
carora le multumesc pe aceasta cale.
---------------------------------
| PROBLEMA 28: Ordonare |
| PUNCTAJ: 50 Dexteri |
| DEADLINE: Luni, 6 Septembrie |
| TIMP DE IMPLEMENTARE: 50 minute |
| TIMP DE EXECUTIE: 1 sec./test |
---------------------------------
Din fisierul "sir.in" se citeste un sir de n numere naturale cuprinse
intre 1 si 60000. Se cere ordonarea crescatoare a acestui sir folosind
urmatoarea operatie: se fixeaza un element al sirului si apoi se rotesc
secventele din stanga si din dreapta lui. De exemplu, daca in sirul
(6 5 7 8 9 4 6 5) se fixeaza elementul de pe pozitia 4 se va obtine sirul
(7 5 6 8 5 6 4 9) adica se roteste sirul (6 5 7) si sirul (9 4 6 5), siruri
aflate in stanga si respectiv in dreapta elementului de pe pozitia 4. Se pot
fixa si elementele fictive de pe pozitiile 0 si n+1.
Prima linie a fisierului "sir.in" contine numarul n (1<=n<=1000) de
elemente ale sirului, iar pe urmatoarele n linii se afla elementele sirului.
Rezultatele se scriu in fisierul "sir.out". Pe fiecare linie este scrisa
pozitia care se fixeaza la un moment dat, pana se ajunge la solutie. Numarul
de linii din acest fisier nu trebuie sa fie mai mare decat 3n.
Exemplu:
sir.in sir.out (un fisier posibil)
4 3
20 2
5
50
25
|
|