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()