from collections import deque
def solution(bridge_length: int, weight: int, truck_weights: list) -> int:
time = 0
bridge = deque([])
truck_weights = deque(truck_weights)
bridge_weight = 0
while truck_weights or bridge:
time += 1
if bridge and bridge[0][1] == bridge_length - 1:
truck_weight, _ = bridge.popleft()
bridge_weight -= truck_weight
for state in bridge:
state[1] += 1
if truck_weights and bridge_weight + truck_weights[0] <= weight:
truck_weight2 = truck_weights.popleft()
bridge_weight += truck_weight2
bridge.append([truck_weight2, 0])
return time