Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I/S. 49. feladat (2020. december)

I/S. 49. Egy forgalmas vasútállomáson egy nagy kijelzőn tájékoztatják az utasokat az induló vonatokról. A vonatokat indulási sorrendben jelenítik meg. Minden járat egy új sorba kerül, mely tartalmazza az indulási időt, a járat azonosítóját, nevét és a vágányt, amelyikről majd indulni fog.

Nem akarják, hogy valaki a kijelzőn a járatát meglátva felszálljon egy ugyanarról a vágányról, de korábban induló vonatra. Ezért egy vonat indulásáról szóló információt addig nem jelenítik meg, amíg az összes, vele azonos vágányról korábban induló vonat el nem hagyta az állomást.

Adjuk meg minden vonatra, hogy melyik az az első időpont, amikor a vonat indulásáról szóló információ megjeleníthető. Minden vonat időben indul. Ha két vonat egyszerre hagyja el az állomást, akkor azok biztosan különböző vágányról indulnak.

Bemenet: az első sor tartalmazza a ma induló járatok \(\displaystyle N\) számát. Minden további sor egy-egy járatot ír le. Az első mező az indulási idő óra:perc formátumban. Utána az azonosító és a járat neve következik. Ezek az angol abc kis- és nagybetűiből állnak. A név tartalmazhat ezen felül szóközkaraktert is. Az utolsó mező a vágány \(\displaystyle v\) sorszáma, melyről a vonat indul.

Kimenet: \(\displaystyle N\) sort kell kiírni: a \(\displaystyle k\)-adik sor megadja a \(\displaystyle k\)-adik járat indulási időpontjának lehetséges legkorábbi megjelenési időpontját. Ha az adott vonat az első, amelyik a vágányt azon a napon használja, akkor a 0:00 időpontot kell kiírni.

Példa:

Korlátok: \(\displaystyle 1\le N\le 10^5\), \(\displaystyle 0\le h\le 23\), \(\displaystyle 0\le m\le 59\), \(\displaystyle 1\le v\le 100\). Időkorlát: 0,5 mp.

Értékelés: a pontok 40%-a kapható, ha \(\displaystyle v=1\) minden sorban.

Beküldendő egy is49.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható.

(10 pont)

A beküldési határidő 2021. január 15-én LEJÁRT.


Egy lehetséges beolvasás c++ nyelven:

cin >> ora >> c >> perc; //ora INT, majd ':' karakter, majd perc INT
getline(cin, s); //maradék sor
s = s.substr(s.findlastof(' ')+1, s.length()-s.findlastof(' ')); //utolsó ' '-nél vágás
vagany = stoi(s);

A gyors megoldáshoz ki kellett használni, hogy a vonatok indulási sorrendben vannak, és minden vágányra (max. 100) eltárolni, mikor indult a legutolsó vonat. Ebből az információból könnyen számítható a megoldás. Oda kell figyelni arra, ha az adott vágányon az az első vonat.


Statisztika:

16 dolgozat érkezett.
10 pontot kapott:Sándor Péter, Varga 256 Péter.
9 pontot kapott:Bagladi Milán Zsolt.
8 pontot kapott:1 versenyző.
7 pontot kapott:1 versenyző.
4 pontot kapott:1 versenyző.
3 pontot kapott:4 versenyző.
2 pontot kapott:1 versenyző.
1 pontot kapott:2 versenyző.
0 pontot kapott:3 versenyző.

A KöMaL 2020. decemberi informatika feladatai