Alguém pode me ajudar nesse exercício? não consegui pegar a ideia dele

O restaurante Don Helder é o maior sucesso gastronômico da cidade. Ele
não aceita reservas, pois seu movimento é muito grande e ele enche a casa todos
os dias. Consequentemente, a fila de espera é enorme.
Observando a dificuldade que os seus funcionários têm em organizar essa
fila toda, a proprietária contratou você para desenvolver um sistema que auxilie
no gerenciamento da fila, otimizando o uso das mesas e reduzindo o tempo de
espera dos clientes no geral.
Então, dado o número de pessoas em cada grupo à espera de uma mesa,
assim como sua ordem de chegada e quantas pessoas cada mesa do salão
comporta, sua missão é indicar que grupo deve ser colocado em qual mesa para
otimizar o atendimento.
Considere que as mesas do restaurante são fixadas ao chão, ou seja, não é
possível juntá-las nem separá-las. Logo, a capacidade do restaurante é de 150
pessoas, distribuídas em:

  • 10 mesas de 2 pessoas – mesas de 1 a 10
  • 15 mesas de 4 pessoas – mesas de 11 a 25
  • 5 mesas de 6 pessoas – mesas de 26 a 30
  • 5 mesas de 8 pessoas – mesas de 31 a 35
    Cada grupo de pessoas que vai ao restaurante deseja sentar junto, e
    portanto os grupos possuem no máximo 8 pessoas. Assim, você não pode dividir
    um mesmo grupo em mais de uma mesa, nem deve colocar mais de um grupo em
    uma mesma mesa.
    O serviço no restaurante também é diferenciado, feito em rodadas.
    Quando não for possível colocar mais pessoas nas mesas (seja porque todas as
    mesas estão ocupadas, ou porque as mesas vazias não comportam os grupos em
    espera), é realizado o atendimento de todas as mesas ao mesmo tempo, ou seja,
    uma rodada. Isso faz com que os clientes também terminem suas refeições
    juntos, e liberem as mesas para os próximos clientes, para que uma nova rodada
    se inicie.
    Desenvolva então um algoritmo para gerenciar a fila de espera do
    restaurante, implementando sua solução em Java. Observe que a forma como
    organizar sua fila irá influenciar diretamente na quantidade de rodadas
    necessárias para atender todos os clientes, e portanto sua tarefa é tentar reduzir
    essa espera ao máximo.
    Seu programa deve exibir a cada rodada a indicação de qual grupo deve
    ser colocado em cada mesa, e ao final, indicar quantas rodadas foram necessárias
    para atender todos os clientes.
    Cada grupo na espera é representado por uma id (sequencial, de acordo
    com a ordem de chegada), e seu tamanho (de 1 a 8, indicando quantas pessoas
    fazem parte do grupo). As mesas são representadas pelo seu número, conforme
    descrito acima.