TOPIC

Time Limit Exceeded com Python

deduardo1 asked 2 years ago

Consegui resolver o problema usando C++. Mas deu Time Limit Exceeded quando tentei resolver usando python, mesmo a abordagem sendo a mesma (uma lista indicando quais lugares do estacionamento estão disponíveis e um dicionário para descobrir rapidamente a localização do carro à partir da placa). Alguém sabe o motivo?

class Carro:
    def __init__(self, placa, comprimento):
        self.placa = placa
        self.comprimento = comprimento
        self.localizacao = -1

def main():
    while True:
        try:
            processa_caso()
        except EOFError:
            break

def processa_caso():
    C, N = map(int, input().split(" "))

    estacionamento = C * [0]
    carros = {}
    faturamento = 0

    for _ in range(N):
        linha = input().split(" ")
        if linha[0] == 'C':
            carro = Carro(int(linha[1]), int(linha[2]))
            faturamento += estaciona_carro(carro, estacionamento, carros)
        elif linha[0] == 'S':
            placa = int(linha[1])
            retira_carro(placa, estacionamento, carros)

    print(faturamento)

def estaciona_carro(carro, estacionamento, carros):
    loc = procura_vaga(carro, estacionamento)
    if loc > -1:
        carro.localizacao = loc
        carros[carro.placa] = carro
        for i in range(loc, loc + carro.comprimento):
            estacionamento[i] = 1
        return 10
    return 0

def procura_vaga(carro, estacionamento):
    loc = -1
    for i in range(len(estacionamento)):
        if estacionamento[i] == 0:
            if loc == -1:
                loc = i
            if loc > -1 and i - loc + 1 >= carro.comprimento:
                return loc
        else:
            loc = -1
    return -1

def retira_carro(placa, estacionamento, carros):
    carro = carros[placa]
    for i in range(carro.localizacao, carro.localizacao + carro.comprimento):
        estacionamento[i] = 0
    carros.pop(placa)

if __name__ == "__main__":
    main()

Remember not post solutions. Your post may be reviewed by our moderators.

  • gantunes8 replied 2 years ago

    Opa, amigo, fiz com python e não deu esse problema. Obrigado por compartilhar sua solução, o meu tava dando 100% de erro mas era porque eu não estava colocando o while com o EOFError, ahaha. Obrigado desde já!