class Auto:
    def __init__(self, x):
        self.o = x[0]
        self.p = x[1]
        self.mp = x[2]
        self.ido = x[3]
        self.irany = x[4]
        self.seb = 1000 / x[3]


class Ido:
    # def __init__(self, o, p, m):
    #     self.o = o
    #     self.p = p
    #     self.mp = m

    def __init__(self, o, p, m):
        mperc = o * 3600 + p * 60 + m
        self.o = mperc // 3600
        self.p = (mperc - 3600 * self.o) // 60
        self.mp = mperc % 60

    def mpbe(self):
        return self.o * 3600 + self.p * 60 + self.mp

    def idobe(self, mperc):
        self.o = mperc // 3600
        self.p = (mperc - 3600 * self.o) // 60
        self.mp = mperc % 60
        return self.o, self.p, self.mp

    def __str__(self):
        return "{:02d} {:02d} {:02d}".format(self.o, self.p, self.mp)

    def __sub__(self, other):
        # két idő különbségét adja vissza másodpercben
        mperc = self.mpbe() - other.mpbe()
        return Ido(0, 0, mperc)


jarmuvek = []
try:
    f = open("forgalom.txt")
    db = f.readline()
    for sor in f.readlines():
        ora, perc, masodperc, ido, irany = sor.split()
        jarmuvek.append(Auto([int(ora), int(perc), int(masodperc), int(ido), irany]))
except FileNotFoundError:
    print("Hiba")
    exit(-1)

# 2. feladat
n = int((input("Adja meg n értékét: ")))
print("A(z) {0}. auto {1} város felé haladt".format(n, "Alsó" if jarmuvek[n - 1].irany == 'F' else "Felső"))

# 3. feladat
print("3. feladat")
felso_fele = [x for x in jarmuvek if x.irany == 'A']
utolso = felso_fele[-1]
elotte = felso_fele[-2]
ido_u = Ido(utolso.o, utolso.p, utolso.mp)
ido_e = Ido(elotte.o, elotte.p, elotte.mp)
print("A két utolsó jármű kötött", ido_u.mpbe() - ido_e.mpbe(), "másodperc volt.")
print(ido_u - ido_e)
# 4. feladat

print("4. feladat")
statisztika = [[0 for i in range(2)] for ora in range(24)]  # 24 db [0, 0] létrehozása
for auto in jarmuvek:
    if auto.irany == 'A':
        statisztika[auto.o][0] += 1
    else:
        statisztika[auto.o][1] += 1
for ora, adat in enumerate(statisztika):
    if adat != [0, 0]:
        print(ora, *adat)

# 5. feladat
print("5. feladat: 10 leggyorsabb")
jarmuvek2 = jarmuvek.copy()
jarmuvek2.sort(key=lambda a: a.seb, reverse=True)
k = 0
for i in range(len(jarmuvek2) - 1):
    if jarmuvek2[i].seb != jarmuvek2[i + 1].seb:
        print(jarmuvek2[i].o, jarmuvek2[i].p, jarmuvek2[i].mp, jarmuvek2[i].irany, round(jarmuvek2[i].seb, 1))
        k += 1
    if k == 9:
        break

# 5. feladat
print("6. feladat")
idok = [Ido(x.o, x.p, x.mp).mpbe() + x.ido for x in jarmuvek if x.irany == 'F']
ki = open("also.txt", "w")
elozo_ido = idok[0]
for i in range(len(idok)):
    if idok[i] > elozo_ido:
        ideje = Ido(0, 0, 0).idobe(idok[i])

        print(Ido(*ideje), file=ki)
        elozo_ido = idok[i]
    else:
        ideje = Ido(0, 0, 0).idobe(elozo_ido)
        print(Ido(*ideje), file=ki)
ki.close()
