park=[]

#------------------------------------------------------------------------------
# 1. Olvassa be a felajanlas.txt állomány tartalmát, tárolja el a felajánlások
#    adatait, és annak felhasználásával oldja meg a következő feladatokat!
#------------------------------------------------------------------------------
def F1(fnev):
    global N
    f=open(fnev,'r')
    N=int(f.readline().strip())
    for sor in f:
        sor=sor.strip().split()
        sor[0]=int(sor[0])
        sor[1]=int(sor[1])
        park.append(sor)
    f.close()
#------------------------------------------------------------------------------
# 2. Írja ki, hány felajánlást tartalmaz az állomány!
#------------------------------------------------------------------------------
def F2():
    print('2. feladat')
    print('A felajánlások száma: %d' %len(park))      
#------------------------------------------------------------------------------
# 3. Jelenítse meg a képernyőn azon felajánlások sorszámát, amelyek a bejárat
#    bal és jobb oldalán található ágyást is beültetnék! A sorszámokat egy-egy
#    szóközzel válassza el egymástól!
#------------------------------------------------------------------------------
def F3():
    print('3. feladat')
    print('A bejárat mindkét oldalán ültetők:',end=' ')
    for sorszam,ajanlat in enumerate(park,start=1):
        if ajanlat[0]>ajanlat[1]:
            print(sorszam,end=' ')
    print()
#------------------------------------------------------------------------------
# 4. Kérje be a felhasználótól egy ágyás sorszámát! A tesztelés során használ-
#    hatja az 1. ágyást, amelyet többen is beültetnének és a 269. ágyást,
#    amelynek beültetésére senki sem vállalkozik.
#------------------------------------------------------------------------------
def F4():
    print('4. feladat')
    sorszam=int(input('Adja meg az ágyás sorszámát! '))
    # 4.a) Írja a képernyőre, hogy hány felajánlásban szerepel ez az ágyás!
    agyas=[]
    for ajanlat in park:
        eltol=0 if ajanlat[0]<ajanlat[1] else N
        if  ajanlat[0]<=sorszam<=ajanlat[1]+eltol:
            agyas.append(ajanlat[2])
    print('A felajánlók száma: %d' %len(agyas))
    # 4. b) Adja meg, milyen színű lesz ez az ágyás, ha mindenki a felajánlások
    #    sorrendjében végzi el az ültetést, de nem ültet, ha másvalaki előtte
    #    már ültetett oda! Ha nem ültetett oda senki, akkor „Ezt az ágyást nem
    #    ültetik be.” szöveget jelenítse meg!
    s='A virágágyás színe, ha csak az első ültet: '
    valasz=s+agyas[0] if len(agyas)>0 else 'Ezt az ágyást nem ültetik be.'
    print(valasz)
    # 4. c) Adja meg, milyen színekben pompázna ez az ágyás, ha az eredeti
    #    tervvel ellentétesen minden felajánló elültetné virágait! Minden
    #    színt csak egyszer tüntessen fel! Az egyes színeket szóközökkel
    #    válassza el egymástól! Ha nem ültettek oda virágot, ne jelenítsen
    #    meg semmit!
    if len(agyas)>0:
        szinek=set(agyas)
        print('A virágágyás színei:',end=' ')
        for szin in szinek:
            print(szin,end=' ')
        print()
#------------------------------------------------------------------------------
# 5. A felajánlások alapján több eset lehetséges. Határozza meg, melyik
#    teljesül! Az idézőjelek közötti szöveget írja a képernyőre!
#       • „Minden ágyás beültetésére van jelentkező.”
#       • Ha nincs minden ágyásra jelentkező, de a felajánlásokban vállalt
#         ágyások számának összege nagyobb vagy egyenlő, mint, az ágyások
#         száma, akkor: „Átszervezéssel megoldható a beültetés.”
#       • Ha kevesebb ágyás beültetésére vállalkoztak, mint amennyi van:
#         „A beültetés nem oldható meg.”
#------------------------------------------------------------------------------
def F5():
    print('5. feladat')
    agyasok=[False]*N
    agyas_db=0
    for ajanlat in park:
        
        kezd=ajanlat[0]-1
        vege=ajanlat[1]
        if kezd<vege:
            agyas_db+=vege-kezd
            for i in range(kezd,vege,1):
                agyasok[i]=True
        else:
            agyas_db+=(N-kezd+1)+vege
            for i in range(kezd,N,1):
                agyasok[i]=True
            for i in range(0,vege,1):
                agyasok[i]=True
    true_db=agyasok.count(True)    
    if true_db==N:
        print('Minden ágyás beültetésére van jelentkező.')
    elif agyas_db>=N:
        print('Átszervezéssel megoldható a beültetés.')
    else:
        print('A beültetés nem oldható meg.')
#------------------------------------------------------------------------------
# 6. A beültetést a felajánlások sorrendjében végezték el. Ha egy ágyást valaki
#    már beültetett, akkor más már nem ültetett oda. A munka eredményét tárolja
#    el a szinek.txt fájlban! A fájlban soronként az ágyások sorszámának
#    sorrendjében két értéket, az ágyás színét jelző karaktert és az ültetéshez
#    tartozó felajánlás sorszámát írja ki. Amelyik ágyás virág nélkül maradt,
#    színként a # karaktert, a felajánlás sorszámának helyére pedig a 0-t írja!
#------------------------------------------------------------------------------
def F6():
    print('6.feladat')
    agyasok=[]
    for i in range(N):
        agyasok.append(['#',0])
    
    for sorszam,ajanlat in enumerate(park,start=1):
        kezd=ajanlat[0]-1
        vege=ajanlat[1]
        for i in range(N):
            if (kezd<=i+1<=vege):
                if agyasok[i][0]=='#':  
                    agyasok[i][0]=ajanlat[2]
                    agyasok[i][1]=sorszam
            elif (kezd>vege) and (kezd<=i+1 or i+1<=vege):
                if agyasok[i][0]=='#':  
                    agyasok[i][0]=ajanlat[2]
                    agyasok[i][1]=sorszam
    fki=open('szinek.txt','w')
    for agyas in agyasok:
        print(agyas[0],agyas[1],file=fki)
    fki.close()
#******************************************************************************
F1('felajanlas.txt')
F2()
F3()
F4()
F5()
F6()    
    
