def kiir(ssz, szoveg):
        print('{}. feladat - {}'.format(ssz, szoveg))

# -----------------------------------------------------------------------------
# 1. Olvassa be az eladott.txt állományban talált adatokat, s azok
#    felhasználásával oldja meg a következő feladatokat! Ha az állományt nem
#    tudja beolvasni, az állomány első 10 sorának adatait jegyezze be a
#    programba és dolgozzon azzal!
# -----------------------------------------------------------------------------
kiir(1, 'Adatok beolvasása')
   
fbe = open('eladott.txt', 'r')
elsosor = fbe.readline()
elsosor = elsosor.strip().split()

ej = int(elsosor[0])
tav = int(elsosor[1])
ar = int(elsosor[2])
adatok = []
for sor in fbe:
	sor = sor.strip().split()
	u = int(sor[0])
	tol = int(sor[1])
	ig = int(sor[2])
	adatok.append([u, tol, ig])
print(adatok)
fbe.close()
   
# -----------------------------------------------------------------------------
# 2. Adja meg a legutolsó jegyvásárló ülésének sorszámát és az általa
#    beutazott távolságot! A kívánt adatokat a képernyőn jelenítse meg!
# -----------------------------------------------------------------------------
kiir(2, 'Legutolsó jegyvásárló adatai')
   
index = ej - 1
print('Utolsó jegyvásárló adatai:')
print('Ülés: ', adatok[index][0])   #vagy: adatok[-1][0]
print('Távolság: {} km'.format(adatok[index][2] - adatok[index][1]))
   
# -----------------------------------------------------------------------------
# 3. Listázza ki, kik utazták végig a teljes utat! Az utasok sorszámát
#    egy-egy szóközzel elválasztva írja a képernyőre!
# -----------------------------------------------------------------------------
kiir(3, 'Kik utazták végig a teljes utat?')

print('Végig utazók sorszáma:')
for i in range(len(adatok)):
	if adatok[i][2] - adatok[i][1] == tav:
		print(i + 1, end=' ')
print()
   
# -----------------------------------------------------------------------------
# 4. Határozza meg, hogy a jegyekből mennyi bevétele származott a társaságnak!
#    Az eredményt írja a képernyőre!
# -----------------------------------------------------------------------------
kiir(3, 'Bevétel számítása')
   
def kerekit(osszeg):
	kerek = 0;
	maradek = osszeg % 5;
	# öttel osztva egy számot a maradék: 0,1,2,3 vagy 4
	# ha 0,1,2 a maradék, akkor az eredeti szám vége: 0,1,2 vagy 5,6,7 lehetett,
	# így lefelé kerekítünk. Pl.: 127 --> maradék: 2 --> eredmény: 125
	# ha 3,4 a maradék, akkor az eredeti szám vége: 3,4 vagy 8,9 lehetett,
	# így felfelé kerekítünk. Pl.: 129 --> maradék: 4 --> eredmény: 129-4+5=130
	if maradek < 3:
		kerek = osszeg - maradek;
	else:
		kerek = osszeg - maradek + 5;
   
	return kerek;
     
bevetel = 0
for adat in adatok:
	tav = adat[2] - adat[1]
	if tav % 10 == 0:
		fizetendo = (tav // 10) * ar
	else:
		fizetendo = ((tav // 10) + 1) * ar
	bevetel += kerekit(fizetendo)
   
print('A társaság bevétele: ', bevetel, 'Ft')
   
# -----------------------------------------------------------------------------
# 5. Írja a képernyőre, hogy a busz végállomást megelőző utolsó
#    megállásánál hányan szálltak fel és le!
# -----------------------------------------------------------------------------
kiir(5, 'Végállomás előtti fel- és leszállók')
      
# feltételezzük, hogy az utolsóelőtti megálló a fel- és leszállásnál is ugyanaz,
# így csak a legnagyobb felszállási km-t nézem meg
def masodikszerint(adat):
	return adat[1]

adatok2 = adatok
adatok2 = sorted(adatok2, key=masodikszerint, reverse=True)
hely = adatok2[0][1]
le, fel = 0, 0
for adat in adatok:
	if adat[1] == hely:
		le += 1
	if adat[2] == hely:
		fel += 1
print('Utolsóelőtti helyen ({}) leszállók száma: {}'.format(hely, le))
print('Utolsóelőtti helyen ({}) felszállók száma: {}'.format(hely, fel))

# -----------------------------------------------------------------------------
# 6. Adja meg, hogy hány helyen állt meg a busz a kiinduló állomás és a
#    célállomás között! Az eredményt írja a képernyőre!
# -----------------------------------------------------------------------------
kiir(6, 'Hány helyen állt meg a busz')

# lehet úgy gondolkodni, hogy a 0-tól eltérő és a végállomástól eltérő fel- és
# leszállások km adatait egy halmazba "dobáljuk", ezzel az ismétlődéseket
# kivédjük és a halmaz elemszáma lesz a megoldás! De biztosan lehet máshogyan is.

halmaz = set()
halmaz2 = set()
for adat in adatok:
	if adat[1] != 0 and adat[1] != tav:
		halmaz.add(adat[1])
	if adat[2] != 0 and adat[2] != tav:
		halmaz.add(adat[2])
  
print('Megállók száma: ', len(halmaz))
 
# -----------------------------------------------------------------------------
# 7. Készítsen „utaslistát” az út egy pontjáról! A listában ülésenként
#    tüntesse fel, hogy azt az adott pillanatban melyik utas foglalja el! A
#    pontot, azaz a kiindulási állomástól mért távolságot, a felhasználótól
#    kérje be! Ha a beolvasott helyen éppen megálló lett volna, akkor a
#    felszálló utasokat vegye figyelembe, a leszállókat pedig hagyja
#    figyelmen kívül! Az eredményt az ülések sorszámának sorrendjében írja a
#    kihol.txt állományba! Az üres helyek esetén az „üres” szót jelenítse
#    meg! Minden ülés külön sorba kerüljön!
# -----------------------------------------------------------------------------
kiir(7, 'Statisztika')
  
fki = open('kihol.txt', 'w')
  
ulesek = [' '] * 48
x = int(input('Adja meg, hogy hányadik km-nél kéri az utasok listáját: '))
for i in range(len(adatok)):
	if x >= adatok[i][1] and x < adatok[i][2]:
		ulesek[adatok[i][0] - 1] = i + 1  # ulesek indexelése az ülésszámmal-1 

for ules in ulesek:
	if ules == ' ':
		print('üres', file=fki)
	else:
		print(ules, file=fki)
  
fki.close()
