fun todos_mayor_dos(lista_boxes): para cada box en lista_boxes: si box.getCola().longitud() <= 2: dev falso // Retorna falso si algún box tiene 2 o menos pasajeros fin si fin para dev verdadero // Todos los boxes tienen más de dos pasajeros fin fun fun menorlen(lista_boxes): box_menor = lista_boxes[0] // Inicializa con el primer box para cada box en lista_boxes: si box.getCola().longitud() < box_menor.getCola().longitud(): box_menor = box // Actualiza al box con menor longitud de cola fin si fin para dev box_menor fin fun fun boxes_vacios(lista_boxes): para cada box en lista_boxes: si box.isOcupado() o !box.getCola().es_vacia(): dev falso // Retorna falso si algún box está ocupado o su cola no está vacía fin si fin para dev verdadero // Todos los boxes están vacíos fin fun fun simular_min: // Verifica si la simulación debe terminar si es_vacia(pila_pas) y boxes_vacios(lista_boxes): dev 0 fin si // Incrementa el tiempo de simulación t++ // Mueve pasajeros de la pila a la cola del box con menor carga mientras !es_vacia(pila_pas) y pila_pas.getCima().getHora() == t: si todos_mayor_dos(lista_boxes): insertar(Box(), lista_boxes) // Añade un nuevo box si todos tienen más de dos pasajeros fin si encolar(pila_pas.getCima(), menorlen(lista_boxes)) // Encola al pasajero en el box con menor cola pila_pas.desapilar() // Quita el pasajero de la pila fin mientras // Procesa cada box para cada box en lista_boxes: si (!box.isOcupado() && es_vacia(box.getCola())): libres++ fin si si (box.isOcupado()): duracionRestante = box.getPasajero().getDuracion() - 1 box.getPasajero().setDuracion(duracionRestante) si duracionRestante <= 0: imprimir "Pasajero ", box.getPasajero().getId(), " atendido y sale del box." aeropuerto.apilar(t - box.getPasajero().getHora()) // Tiempo total de atención box.setOcupado(false) // Libera el box box.setPasajero(Pasajero()) // Restaura el box sino: imprimir "El pasajero en box ", box.getID(), " está siendo procesado. Tiempo restante: ", duracionRestante fin si fin si // Asigna un nuevo pasajero si el box está vacío si (!box.isOcupado() && !es_vacia(box.getCola())): nuevoPasajero = box.getCola().desencolar() box.setPasajero(nuevoPasajero) box.setOcupado(true) imprimir "Asignando pasajero ", nuevoPasajero.getId(), " al box ", box.getID(), " con tiempo de atención de ", nuevoPasajero.getDuracion(), " minutos." fin si fin para si libres >= 2: borrar_libres(lista_boxes) // Borra boxes si hay dos o más vacíos fin si dev 1 // Indica que la simulación sigue activa fin fun