Cuando un enunciado es, al menos en apariencia, tan enrevesado, lo mejor es intentar hacerse un diagrama de flujo para clarificar las ideas.
No soy muy bueno en diagramas la verdad, pero más o menos creo que esto sería el flujo que ha de seguir este programa:
Lo primero sería preguntar si hay Cajas libres, porque si no las hay, no hay nada que hacer.
Si las hay, entonces preguntamos por las tres colas que Clientes que tenemos según su prioridad.
Primero la tercera edad, si hay clientes haciendo cola, entonces comprobamos cuantas cajas tiene este banco. Según cuantas cajas, podremos asignar o no uno de estos clientes, comprobando también los límites impuestos.
Si no es posible asignar, o bien no hay clientes 3ª edad haciendo cola, entonces nos vamos a la cola de los Empresarios.
Si hay Empresarios haciendo cola, podemos asignarle caja siempre que no haya ya un Empresario en una de ellas.
Si ya hay un Empresario, o bien no hay ninguno haciendo cola, entonces nos vamos a la cola de clientes Normales.
Estos no tienen restricciones, si hay alguno haciendo cola, puesto que ya hemos revisado las anteriores colas prioritarias, podemos asignar un cliente Normal a una de las cajas libres.
Si no hay Normales haciendo cola, entonces es que todas la colas están vacías y avisamos con un mensaje.
Bueno, con esto creo que queda claro cuáles son las condiciones (los if) que el código ha de tener en cuenta y en que orden.
Tú misma puedes comenzar a escribir un código y si no consigues terminarlo, muéstralo aquí y te intentamos ayudar a completarlo.
Y en ese caso, si puedes, aporta más información sobre cómo ha de ser el programa, si es que la tienes.
Es decir, si tienes indicaciones de como se van a representar en el código las Cajas (una clase, un array..), las Colas, los Clientes...etc..