class Ut:
    def __init__(self, nap, fuvar, tav):
        self.nap = nap
        self.fuvar = fuvar
        self.tav = tav

    def dij(self):
        dijazas = Dij(self.tav)
        return dijazas.dij


class Fuvarok:
    def __init__(self, utak=None):
        if utak is None:
            utak = []
        self.utak = utak

    def elso_ut_tav(self):
        """a het elso utjanak hossza"""
        return self.utak[0].tav

    def utolso_ut_tav(self):
        """a het utolso utjanak hossza"""
        return self.utak[-1].tav

    def nem_dolgozott(self):
        """azok a napok, amikor nem dolgozik"""
        return [str(nap) for nap in range(1, 8) if nap not in [ut.nap for ut in self.utak]]

    def nem_dolgozott_kiir(self):
        """azok a napok, amikor nem dolgozik kiir"""
        return ','.join(self.nem_dolgozott())

    def legtobb_fuvar_nap(self):
        """azok a napok, amikor a legtobb fuvar volt"""
        fuvarszam = [0] * 7
        for ut in self.utak:
            fuvarszam[ut.nap - 1] += 1
        return [str(index + 1) for index, db in enumerate(fuvarszam) if db == max(fuvarszam)]

    def legtobb_fuvar_nap_kiir(self):
        """azok a napok, amikor a legtobb fuvar volt kiir"""
        return ','.join(self.legtobb_fuvar_nap())

    def napi_ut(self):
        """napi tavolsagok"""
        tavok = [0] * 7
        for ut in self.utak:
            tavok[ut.nap - 1] += ut.tav
        return tavok

    def napi_ut_kiir(self):
        """napi tavolsagok kiir"""
        sz = ''
        for index, tav in enumerate(self.napi_ut()):
            sz += str(index + 1) + '. nap ' + str(tav) + ' km\n'
        return sz

    def utak_dija_kiir(self):
        """utak dijai kiir"""
        sz = ''
        for ut in self.utak:
            sz += str(ut.nap) + '. nap ' + str(ut.fuvar) + '. út: ' + str(Dij(ut.tav).dij) + ' Ft\n'
        return sz

    def osszdij(self):
        """teljes dijazas"""
        return sum(Dij(ut.tav).dij for ut in self.utak)


class Dij:
    def __init__(self, uthossz):

        if 1 <= uthossz <= 2:
            self.dij = 500
        elif 3 <= uthossz <= 5:
            self.dij = 700
        elif 6 <= uthossz <= 10:
            self.dij = 900
        elif 11 <= uthossz <= 20:
            self.dij = 1400
        else:
            self.dij = 2000


class Fajl:
    """Fajlmuveletek osztalya"""

    def __init__(self, fnev):
        self.fnev = fnev

    def beolvas(self):
        """fajl adatainak beolvasasa"""
        f = open(self.fnev)
        utak = []
        for sor in f.readlines():
            nap, fuvar, tav = sor.split()
            utak.append(Ut(int(nap), int(fuvar), int(tav)))
        utak.sort(key=lambda x: x.nap * 100 + x.fuvar)
        return utak

    def kiir(self, adatok):
        """fajlba iras"""
        f = open(self.fnev, 'w', encoding='utf-8')
        print(adatok, end='', file=f)
        f.close()


# 1. feladat
fajl = Fajl('tavok.txt')
utak = fajl.beolvas()
fuvarok = Fuvarok(utak)

# 2. feladat
print("2. feladat\nA hét első utjának hossza:", fuvarok.elso_ut_tav(), "km")

# 3. feladat
print("3. feladat\nA hét utolsó utjának hossza:", fuvarok.utolso_ut_tav(), "km")

# 4. feladat
print("4. feladat\nAz(ok) a nap(ok), amikor a futár nem dolgozik:", fuvarok.nem_dolgozott_kiir())

# 5. feladat
print("5. feladat\nA legtöbb fuvar napja(i):", fuvarok.legtobb_fuvar_nap_kiir())

# 6. feladat
print("6. feladat\nNapi utak:")
print(fuvarok.napi_ut_kiir())

# 7. feladat
tavolsag = int(input("7. feladat\nAdjon meg egy távolságot: "))
print("A díjjazás:", Dij(tavolsag).dij, "Ft")

# 8. feladat
fajl = Fajl('dijazasOOP.txt')
fajl.kiir(fuvarok.utak_dija_kiir())
print("8. feladat\nA fájlba írás kész.")

# 9. feladat
print("9. feladat\nA futár a heti munkájáért {:,} Ft-ot kap.".format(fuvarok.osszdij()))
