Cod sursa(job #2794870)

Utilizator Tudor06MusatTudor Tudor06 Data 5 noiembrie 2021 16:36:56
Problema Arbori de intervale Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.15 kb
aint = []

def update( st, dr, poz, val, i ):
    if st == dr:
        aint[i] = val
    else:
        mij = int((st + dr) / 2)
        if poz <= mij:
            update(st, mij, poz, val, i * 2 + 1)
        else:
            update(mij + 1, dr, poz, val, i * 2 + 2)
        aint[i] = max(aint[i * 2 + 1], aint[i * 2 + 2])
def query( st, dr, a, b, i ):
    if a == st and b == dr:
        return aint[i]
    mij = int((st + dr) / 2)
    if b <= mij:
        return query( st, mij, a, b, i * 2 + 1 )
    elif a > mij:
        return query( mij + 1, dr, a, b, i * 2 + 2 )
    else:
        return max( query( st, mij, a, mij, i * 2 + 1 ),
                    query( mij + 1, dr, mij + 1, b, i * 2 + 2 ) )

fin  = open("arbint.in", "r" )
fout = open("arbint.out", "w")

n,q = map(int, fin.readline().split())

for i in range(4 * n):
    aint.append(0)
v = map(int, fin.readline().split())

for i in range(n):
    update( 0, n - 1, i, v[i], 0 )

for i in range(q):
    a,b,c = map(int, fin.readline().split())
    if a == 0:
        fout.write( str(query( 0, n - 1, b - 1, c - 1, 0 )) )
    else:
        update( 0, n - 1, b - 1, c, 0 )