TÓPICO

Run time error - python 3

PierreVieira perguntou 4 years ago

Estou recebendo RTE nesse código. Funciona perfeitamente para as entradas do uDebgu!

def binary_search(array, item, begin=0, end=None):
    if end is None:  # Se o end é None, então estamos fazendo a primeira chamada à função
        end = len(array) - 1  # Logo a posição final deve ser o tamanho da lista - 1
    if begin <= end:  # Se a sublista é válida
        m = (begin + end) // 2  # Meio da lista
        if array[m] == item:  # Se o meio da lista é o elemento que estamos pesquisando
            inicio, fim = 0, end
            for i in range(m, -1, -1):  # Calculando onde começa a sequencia
                if array[i] != item:
                    inicio = i + 1
                    break
            for i in range(m, end + 1):  # Calculando onde termina a sequencia
                if array[i] != item:
                    fim = i - 1
                    break
            return inicio, fim
        if item < array[m]:  # Se o ítem pesquisado for menor que o ítem que está no meio da lista
            return binary_search(array, item, begin, m - 1)  # Faça a pesquisa pela esquerda
        return binary_search(array, item, m + 1, end)  # Senão, quer dizer que ele está a direita da lista
    return None  # Caso o elemento não esteja na lista retorne None

def solve_this_problem():
    lista = []
    for c in range(n):
        a, b = map(int, input().split())
        for d in range(a, b + 1):
            lista.append(d)
    elemento = int(input())
    lista.sort()
    indice = binary_search(lista, elemento)
    if indice is None:
        print('{} not found'.format(elemento))
    else:
        print('{} found from {} to {}'.format(elemento, indice[0], indice[-1]))

while True:
    try:
        n = int(input())
    except EOFError:
        break
    else:
        solve_this_problem()

Este tópico ainda não foi respondido. Seja o primeiro!

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.