Datotečni sistem

Osnovne informacije

Omejitve
  • Čas: 8 s
  • Spomin: 256 MB
Avtor:
  • Nino Bašić
  • UPM 2013

Pošlji rešitev



Tvoji rezultati.
Nisi poslal še nobene rešitve.
Več »

Pepi šele spoznava radosti operacijskega sistema GNU/Linux. Ravnokar si je na prenosnik namestil Ubuntu 12.04 LTS. Najprej je šel na Facebook in posodobil svoj status: "Namestil sem Ubuntu Linux! Juhuhu!" Medtem ko je čakal na prvi Like! se je želel razgledat po disku in doživel prvo presenečenje. Pognal je program Nautilus in se znašel v mapi Home. Toda kje je disk C: in kje je CD-ROM pogon D:? Pozanimal se je in izvedel, da Linux upravlja enote drugače kakor DOS ali Windows. Logičnih enot ne ločuje z oznakami kot so A:, C: ali D:, ampak vse enote vidimo kot del enotnega datotečnega sistema. Vrhnji imenik se imenuje /, imeniki in podimeniki pa so ločeni s / (poševnico). Njegov domači imenik je /home/pepi, programi pa so nahajajo v /usr/bin. Slike z dopusta je shranil v mapo /home/pepi/slike/vrsar_2013, domače naloge pa v mapo /home/pepi/faks/domace_naloge.

Toda to še ni bilo vse. Kmalu je odkril ukazno vrstico:

pepi@tyrion:$ cd faks
pepi@tyrion:~/faks\ mkdir ars2
    pepi@tyrion:~/fak$ cd ars2
    pepi@tyrion:~/faks/ars2\ pwd
/home/pepi/faks/ars2
pepi@tyrion:~/faks/ars$ cd ..
pepi@tyrion:~/faks\ pwd
    /home/pepi/faks
    pepi@tyrion:~/fak$ _

Nemudoma je vzljubil majhno črno okence. Le kako ga ne bi? Spoznal je, da se lahko z ukazom `cd` premakne v izbran podimenik (oz. v nadimenik, če vtipka `cd ..`). Z ukazom `mkdir` lahko ustvari nov imenik, z ukazom `pwd` pa izpiše celotno pot do trenutnega imenika. 

## Naloga

Napiši program, ki bo simuliral ukazno vrstico oz. le ukaze `cd`, `pwd` in `mkdir` – pa še teh ne v vsej splošnosti.

## Vhodni podatki

V prvi vrstici se nahaja celo število N. Tej sledi N vrstic, ki so lahko ene od naslednjih oblik:

 - `pwd`
 - `mkdir [imenik]`
 - `cd [imenik]`
 - `cd ..`

Ukaz `pwd` bo edina beseda v vrstici. Ukazoma `cd` in `mkdir` sledi presledek in nato ime imenika (na katerega se ukaz nanaša). Pri ukazu `cd` sta lahko za presledkom dve piki (namesto imena imenika).

### Omejitve vhodnih podatkov

 * 1 \leq N \leq 5 \cdot 10^5
* Ime imenika lahko vsebuje kvečjemu 50 znakov. * Ime imenika lahko sestavljajo velike in male črke angleške abecede, števke in `'_'` (podrčtaj). * V nobenem imeniku ne bo več kot 5000 podimenikov. * Maksimalna globina gnezdenja (tj. število imenikov na celotni poti od korenskega imenika) bo 5000. ## Izhodni podatki Za vsak `pwd` v vhodnih podatkih naj program izpiše po eno vrstico. Ta naj vsebuje celotno pot do trenutnega imenika. Pri ukazih `cd` in `mkdir` ne izpisuj ničesar. Predpostavi, da se na začetku nahajamo v korenskem imeniku, ki ne vsebuje nobene podmape (disk je bil ravnokar formatiran). Neveljavne operacije naj program ignorira in naj _ne_ izpisuje sporočil o napakah. Neveljavne operacije so: * `cd [imenik]`, kjer mapa z imenom `[imenik]` sploh ne obstaja; * `cd ..` v korenskem imeniku; * `mkdir [imenik]`, kjer mapa z imenom `[imenik]` že obstaja. **Pozor**: Vhodni in izhodni podatki so veliki, zato pametno izbirajte metode za branje oz. izpis podatkov. ### Omejitve izhodnih podatkov Pri vseh testnih primerih bo izpis manjši od 20 MB.

Primer

Vhod

14
pwd
mkdir home
cd home
mkdir pepi
cd pepi
mkdir faks
cd faks
mkdir ars2
cd ars2
pwd
cd ..
pwd
cd slike
pwd

Izhod

/
/home/pepi/faks/ars2
/home/pepi/faks
/home/pepi/faks
Tip: Log in to
  • submit and test your solution
  • post or read questions and answers about this task