Cerința
Se consideră o listă circulară simplu înlănțuită, alocată dinamic, cu n
elemente, numere naturale citite de la tastatură; primul element al acestei liste este considerat element curent. Se citesc m
numere naturale și pentru fiecare se aplică următoarea operație:
- pentru numărul citit
x
elementul curent al listei avansează cux
poziții; - după elementul curent actual se inserează dublul său și elementul inserat devine element curent.
Să se afișeze elementele listei după cele m
operații. Afișarea începe cu elementul care a fost element curent imediat după citire.
Date de intrare
Programul citește din fișierul circularlistinsert.in
numărul n
, iar apoi cele n
elemente ale listei, separate prin spații, iar apoi m
și m
numere naturale, separate prin spații.
Date de ieșire
Programul va afișa în fișierul circularlistinsert.out
elementele listei prelucrate cu spații între ele.
Restricții și precizări
1 ≤ n ≤ 100.000
1 ≤ m ≤ 10.000
- cele
n
numere citite vor fi mai mici decât1.000
- cele
m
numere citite vor fi mai mici decât2.000
- pentru toate testele, după cele
m
inserări se vor obține în listă numere reprezentabile pe32
de biți cu semn.
Exemplu:
circularlistinsert.in
8 15 8 5 15 8 6 2 16 4 4 6 8 5
circularlistinsert.out
15 8 16 5 10 15 8 16 32 6 2 16
Explicație
- inițial, elementul curent este
15
, iarx=4
. Elementul curent avansează cu4
poziții și devine8
, după el se inserează16
și acesta devine element curent. Lista devine:15 8 5 15 8 16 6 2 16
. - elementul curent este
16
șix=6
. Elementul curent avansează cu6
poziții și devine5
, după el se inserează10
și acesta devine element curent. Lista devine:15 8 5 10 15 8 16 6 2 16
.