"""
2010. május idegennyelvű: Telek
@author Klemand66
"""

print("\n1. feladat\n")

betxt = open("telkek.txt")
tdb = int(betxt.readline().strip()) 

gsor,jsor=[], []

for i in range(tdb):
    darsor=betxt.readline().strip().split()  
    adatsor=list(map(int,darsor))
    # 0: hsz, 1: szélesség, 2: hossz
    if adatsor[0]%2==1:
        gsor.append(adatsor)
    else:
        jsor.append(adatsor)

# Házszám szerinti rendezések:
gsor.sort(key=lambda elem:elem[0])
jsor.sort(key=lambda elem:elem[0])
    
betxt.close()
print("A beolvasás és a fájl lezárása sikeresen befejeződött.")

print("\n2. feladat\n")

# Mivel a telek téglalap, elég pl. Jólétsor hosszát meghatározni.
jhossz=0
for telek in jsor:
    jhossz+=telek[1]
    
print(f'A két utca körbejárásához {2*(jhossz+80)} métert kell gyalogolni.')


print("\n3. feladat\n")

teljesdb=0
for telek in jsor:
    if telek[1]<=20:
        teljesdb+=1

print(f'A teljes utcafront beépítések száma Jólétsoron: {teljesdb}')


print("\n4. feladat\n")

hszmin,tmin=gsor[0][0],gsor[0][1]*gsor[0][2]
hszmax,tmax=hszmin,tmin

for telek in gsor[1:]:
    ter=telek[1]*telek[2]
    if ter<tmin:
        hszmin=telek[0]
        tmin=ter
    elif ter>tmax:
        hszmax=telek[0]
        tmax=ter

print(f'A legnagyobb területű telek házszáma {hszmax}, területe {tmax} nm.')
print(f'A legkisebb területű telek házszáma {hszmin}, területe {tmin} nm.')
print(f'{(abs(hszmax-hszmin)-2)//2} darab telek van közöttük.')
    

print("\n5. feladat\n")

def adoszamito(szel, hossz):
    ter=szel*hossz
    if ter<=700:
        ado=ter*51
    elif ter<=1000:
        ado=700*51+(ter-700)*39
    else:
        ado=700*51+300*39+200
    if szel<=15 or hossz<=25:
        ado=int(ado*0.8)
    m=ado%100
    ado-=m
    if m>=50:
        ado+=100
    return ado

adobev=0
for telek in gsor:
    adobev+=adoszamito(telek[1],telek[2])

print(f'Gazdagsoron az önkormányzat {adobev} Fabatka telekadó bevételre számíthat.')    


print("\n6. feladat\n")

print("Jólétsor utolsó három telke és távolságuk Jólétsor elejétől:")

tav=jhossz
for i in range(len(jsor)-1,len(jsor)-4,-1):
    tav-=jsor[i][1]
    print(f'{jsor[i][0]} {tav} m ')
    
    
print("\n7. feladat\n")

"""
    a_______b
       c_______d
A két intervallumnak akkor és csakis akkor van közös pontja, ha c<=b és d>=a
"""

def szemben(a,b,c,d):
    return c<=b and d>=a    

# A telkek távolságai az utcák elejéről:
gtav,jtav=0,0
gtavok,jtavok=[],[]

for i in range(len(gsor)):
    gtavok.append(gtav)
    gtav+=gsor[i][1]
    jtavok.append(jtav)
    jtav+=jsor[i][1]

kitxt = open("joletsor.csv","w")

for i,jtelek in enumerate(jsor):
    gh=0
    for j,gtelek in enumerate(gsor):
        if szemben(jtavok[i],jtavok[i]+jtelek[1],gtavok[j],gtavok[j]+gtelek[1]):
            gh=max(gh,gtelek[2])
    kitxt.write(f'{jtelek[0]};{jtelek[1]};{80-10-gh}\n')
            
kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.\n")

input("\nA befejezéshez nyomd meg az ENTER billentyűt!")
