foglalasok = []
honapok = []


def tartozkodas(foglalas):
    return foglalas[3] - foglalas[2]


def szamla(foglalas):
    if foglalas[2] < 121:
        szobaar = 9000
    elif foglalas[2] < 244:
        szobaar = 10000
    else:
        szobaar = 8000
    # teljes szobaár
    koltseg = tartozkodas(foglalas) * szobaar
    if foglalas[4] == 3:
        koltseg += tartozkodas(foglalas) * 2000
    # reggeli
    koltseg += foglalas[5] * foglalas[4] * tartozkodas(foglalas) * 1100
    return koltseg


def honap_indexe(honapok, nap):
    for index, honap in enumerate(honapok):
        if honap[2] <= nap < (honap[2] + honap[1]):
            return index


# 1. feladat
f = open("pitypang.txt")
db = f.readline()
for sor in f.readlines():
    sorszam, szobaszam, erkezes, tavozas, vendegszam, reggeli, azonosito = sor.split()
    foglalasok.append(
        [int(sorszam), int(szobaszam), int(erkezes), int(tavozas), int(vendegszam), int(reggeli), azonosito])

f = open("honapok.txt")
i = 0
for ho in f.readlines():
    if i % 3 == 0:
        honapok.append(ho.split())
    else:
        honapok[-1].append(int(ho))
    i += 1
f.close()

# 2. feladat
print("2. feladat:\nA leghosszabb tartózkodás:")
leghosszabb = [(foglalas[6], foglalas[3], tartozkodas(foglalas)) for foglalas in foglalasok if tartozkodas(
    foglalas) == max(tartozkodas(f) for f in foglalasok)]
# leghosszabb = max(foglalasok, key=lambda x: tartozkodas(x))
# print(leghosszabb)
for i in leghosszabb:
    print("{0} ({1}) - {2}".format(*i))

# 3. feladat
print("3. feladat: bevetel.txt fájl")
osszesen = 0
ki = open("bevetel.txt", "w")
for f in foglalasok:
    print("{}:{}".format(f[0], szamla(f)), file=ki)
    osszesen += szamla(f)
print("A szálloda bevétele: {} Ft volt.".format(osszesen))
ki.close()

# 4. feladat
print("4. feladat:\nHavonkénti vendégéjszakák száma:")
statisztika = [0] * 12
for foglalas in foglalasok:
    for nap in range(foglalas[2], foglalas[3]):
        statisztika[honap_indexe(honapok, nap)] += foglalas[4]

for index, db in enumerate(statisztika):
    print("{}: {} vendégéj".format(index + 1, db))

# 5. feladat
kezdo_nap = int(input("5. feladat\nAdja meg a kezdőnap sorszámát: "))
ejszakak_szama = int(input("Adja meg az éjszakák számát: "))
szobak = [1] * 27  # beállítjuk, hogy mindegyik szabad
for nap in range(kezdo_nap, kezdo_nap + ejszakak_szama):
    for foglalas in foglalasok:
        if foglalas[2] <= nap < foglalas[3]:
            szobak[foglalas[1] - 1] = 0  # foglalt lesz
szabad_szobak = [(index + 1) for index, szabad in enumerate(szobak) if szabad]
if not szabad_szobak:
    print("Nincs szabad szoba")
else:
    print("Szabad szobák száma:", len(szabad_szobak))
