"""
2009. május idegennyelvű: Automata
@author Klemand66
"""

print("\n1. feladat\n")

betxt = open("csoki.txt")

rekdb = int(betxt.readline().strip())
csrekeszek, csdbk, csarak = [], [], []
for i in range(rekdb):
    sor=betxt.readline().strip()  # beolvasás és megtisztítás
    darsor=sor.split()            # darabolás
    adatsor=list(map(int,darsor)) # egész számmá alakítás
    csrekeszek.append(adatsor[0])
    csdbk.append(adatsor[1])
    csarak.append(adatsor[2])
    
betxt.close()


betxt = open("vasarlas.txt")

vasdb = int(betxt.readline().strip())
vrekeszek, vdbk, vcimletdbk = [], [], []
for i in range(vasdb):
    sor=betxt.readline().strip()  
    darsor=sor.split()            
    adatsor=list(map(int,darsor))
    vrekeszek.append(adatsor[0])
    vdbk.append(adatsor[1])
    vcimletdbk.append(adatsor[2:])
    
betxt.close()
print("A beolvasás és a fájl lezárása sikeresen befejeződött.")


print("\n2. feladat\n")

ertek=0

for i in range(rekdb):
    ertek+=csdbk[i]*csarak[i]
    
print(f'Az automatában {ertek} fabatka értékű csokoládé van.')


print("\n3. feladat\n")

prekeszek=[]

for rek in vrekeszek:
    if not rek in prekeszek:
        prekeszek.append(rek)
        
prekeszek.sort() # ha sztringként rendezném, a 18 a 2 előtt lenne
strprekeszek=list(map(str,prekeszek))

print(f'A következő rekeszekből próbáltak vásárolni: {" ".join(strprekeszek)}')


print("\n4. feladat\n")

keret=int(input("Kérem a 7 egyforma csokoládéra szánt összeget: "))

print("A következő rekeszekből lehet választani: ", end="")
for i in range(rekdb):
    if csdbk[i] >= 7 and 7*csarak[i]<=keret:
        print(csrekeszek[i],end=" ")
print()


print("\n5. feladat\n")

r=int(input(f'Kérem a rekesz sorszámát (max: {rekdb}): '))
db=int(input("Kérem a csokoládék darabszámát: "))
aktindex=csrekeszek.index(r)
osszeg=csarak[aktindex]*db

print(f'A fizetendő összeg: {osszeg} fabatka.')
print("Az optimális címletezés:")
cimletek=[1, 2, 5, 10, 20, 50, 100 ]
cimletdbk = [ 0, 0, 0, 0, 0, 0, 0 ]

while osszeg>0:
    for i in range(6,-1,-1):
        if cimletek[i]<=osszeg:
            cimletdbk[i]+=1
            osszeg-=cimletek[i]
            break

for i in range(6,-1,-1):
    if cimletdbk[i]!=0:
        print(f'{cimletek[i]:3}: {cimletdbk[i]:2}')


print("\n6. feladat\n")

# Általánosítva tetszőleges rekeszre

r=int(input(f'Kérem egy rekesz sorszámát (max: {rekdb}, a feladat szerint 7): '))

kitxt = open(f'rekesz{r}.txt',"w")

ind=csrekeszek.index(r)
csdb=csdbk[ind]
csar=csarak[ind]

for i in range(vasdb):
    if vrekeszek[i]==r:
        kitxt.write(f'{i+1:2}')
        aktdb=vdbk[i]
        aktcimletdbk=vcimletdbk[i]
        bepenz=sum(list(map(lambda j:aktcimletdbk[j]*cimletek[j],range(7))))
        if csdb>=aktdb and bepenz>=aktdb*csar:
            kitxt.write(f'\t{aktdb} (visszajár: {bepenz}-{aktdb}*{csar}={bepenz-aktdb*csar})')
            csdb-=aktdb
        else:
            if csdb<aktdb:
                kitxt.write(f'\tkevés a csoki ({csdb}<{aktdb})')
            if bepenz<aktdb*csar:
                kitxt.write(f'\tnem volt elég pénz ({bepenz}<{aktdb}*{csar})')    
        kitxt.write("\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!")
