Feladat: S.23 Korcsoport: - Nehézségi fok: -
Füzet: 2007/január, 35. oldal  PDF  |  MathML 
Témakör(ök): Nehezebb feladat

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Egy egyszerű háttértáron található fájlokat és azok egyes darabjainak elhelyezkedését mutatja az alábbi táblázat:

1.  idojaras.txt 160 0
2.  --- 17 5
3.  mese.doc 180 0
4.  --- 20 2
5.  --- 5 10
6.  mese.doc 28 3
7.  hoember 128 0
8.  mikulas.jpg 560 0
9.  hoember 47 7
10. --- 633 0

A táblázat sorai (legföljebb 100 000 sor) a háttértár egymást követő különböző méretű részeit jelentik. Minden sorban elsőként a tárolt állomány neve, vagy három kötőjel szerepel (a sorszámokat csak a könnyebb érthetőség miatt írtuk ki, a táblázatban nem szerepelnek).
A fájlnév az angol abc kisbetűit és esetleg egy pontot tartalmaz, a három kötőjel a háttértár szabad területét jelzi. A fájlnév, illetve ,,---'' után szóközzel elválasztva a fájl, vagy szabad rész adott darabjának méretét adja (1 és 100 000 közötti egész), valamint egy szóköz után a következő rész helyét a táblázatban (pozitív egész, illetve zérus, ha ez a fájl, vagy szabad rész vége).
Készítsünk programot, amely megadja a fenti szerkezetű háttértár állományait és szabad területét abc sorrendben. A név után szóközzel elválasztva megjeleníti a fájl teljes méretét, valamint megfelelő sorrendben az állomány által elfoglalt területek kezdetét és végét kötőjellel elválasztva. A fenti példa esetén a kimenet:

hoember 175 1099-1145 411-538
idojaras.txt 160 1-160
mese.doc 208 383-410 178-357
mikulas.jpg 560 539-1098
--- szabad 675 358-377 161-177 378-382 1046-1078

A program a be- és kimeneti fájlok nevét a parancssorból olvassa be, használata például S23.exe bemenet.txt kimenet.txt. A bemeneti állomány a fenti példa szerinti szerkezetű (sorszámok nélkül). A programokat több bemeneti állománnyal is teszteljük, teljes pontszámot csak a több tízezer fájl esetén is néhány perc alatt eredményt adó megoldások kaphatnak.
Beküldendő a megoldást tartalmazó program forrásállománya (S23.pas, S23.cpp, ...), valamint a megoldás rövid dokumentációja (S23.txt, S23.pdf, ...).