Mai intai trebuie sa te autentifici.
Diferente pentru problema/queue intre reviziile #3 si #15
Nu exista diferente intre titluri.
Diferente intre continut:
* $push(S,X)$ - elementul $X$ se adauga in capul stivei $S$ * $pop(S)$ - se sterge un element din capul stivei $S$
Dupa efectuarea unei operatii de pop, valoarea dintr-o stiva va fi amplasata in variabila $WR$. Spre exemplu, ca sa mutam capul stivei $1$ in stiva $2$ trebuie sa efectuam urmatorul set de operatii: $pop(1) push(2,WR)$. Capul stivei 1 va ajunge in variabila $WR$, si putem folosi aceasta variabila pentru a introduce valoare in stiva $2$.
Dupa efectuarea unei operatii de pop, valoarea dintr-o stiva va fi amplasata in variabila $WR$. Spre exemplu, ca sa mutam capul stivei $1$ in stiva $2$ trebuie sa efectuam urmatorul set de operatii: $pop(1) push(2,WR)$. Capul stivei 1 va ajunge in variabila $WR$, si putem folosi aceasta variabila pentru a introduce valoarea in stiva $2$.
h2. Date de intrare
h2. Date de ieşire
În fişierul de ieşire $queue.out$ trebuie sa existe $N$ linii. Fiecare linie din fisierul de output trebuie sa inceapa cu indicele operatiei din input careia sirul de operatii dinoutputii contine, urmat de caracterel ": ". Pe linia $i$ trebuie sa existe o serie de operatii valide efectuate pe stive, separate prin cate un spatiu. In cazul in care operatia din input este de tip $push$, pentru a introduce valoarea din input in variabila $WR$ trebuie folosita instructiunea $read(WR)$. In cazul in care operatia din input este de tip $pop$, pentru a afisa variabila $WR$ trebuie folosita instructiunea $write(WR)$.
În fişierul de ieşire $queue.out$ trebuie sa existe $N$ linii. Fiecare linie din fisierul de output trebuie sa inceapa cu indicele operatiei din input careia sirul de operatii de pe linia curenta ii corespunde, urmat de caracterele ":"," ". Pe linia $i$ trebuie sa existe o serie de operatii valide efectuate pe stive, separate prin cate un spatiu. **In cazul in care operatia din input este de tip $push$, pentru a introduce valoarea din input in variabila $WR$ trebuie folosita instructiunea $read(WR)$. In cazul in care operatia din input este de tip $pop$, pentru a afisa variabila $WR$ trebuie folosita instructiunea $write(WR)$.**
h2. Restricţii
* $1 ≤ N ≤ 100 000$ * O operatie de $push$ se considera valida daca valoare folosita se afla in $WR$. * Toate valorile folosite in operatiile de $push$ vor fi **distincte**.
* $1 ≤ N ≤ 30 000$ * O operatie de $push$ efectuata pe una dintre stive se considera valida daca valoare folosita se afla in $WR$. * Toate valorile folosite in operatiile de $push_back$ vor fi **distincte**. * Toate valorile folosite in operatiile de $push_back$ vor fi numere naturale $≤ 10^6^$. * Pe fiecare linie a fisierului de output puteti afisa maximum $500 000$ caractere, altfel outputul se va considera invalid. * Pentru orice operatie de tip $push_back(x)$ trebuie sa se faca fix o operatie de tip $read(x)$ * Pentru orice operatie de tip $pop_front()$ trebuie sa se faca fix o operatie de tip $write(x)$
h2. Exemplu table(example). |_. queue.in |_. queue.out |
| 52
| 5
push_back(3) push_back(5)
push_front(1)
pop_front()
pop_back()
pop_front() push_back(2)
| 1: read(3) push(1,3) 2: read(5) push(1,5)
3: pop(1) push(2,5) pop(1)push(2,3)read(1)push(2,1)4: pop(2) write(2) 5:pop(2) push(1,3) pop(2)write(5)
3: pop(1) push(2,5) pop(1) write(3) 4: pop(2) write(5) 5: read(2) push(2,2)
|
h3. Explicaţie ...
== include(page="template/taskfooter" task_id="queue") ==
