Algoritmo de preenchimento de colunas

Tenho a necessidade de modelar um relatório cujo leiaute é dividido em duas colunas por linha, onde cada coluna cabe um campo de 50 caracteres. Se um campo tiver tamanho menor ou igual a 50 caracteres ele pode ocupar uma coluna, se ele tiver mais de 50 caracteres ele vai ocupar as duas colunas da linha e o próximo campo será deslocado para a próxima linha.

Exemplo:

Preciso construir um algoritmo que receba como entrada um vetor com o número de colunas de cada campo e como saída a posição que cada campo receberá.

Entrada: [2, 1, 2, 1, 1, 1] -> Número de colunas de cada campo
Saída: [1, 3, 5, 7, 8, 9] -> Posição de cada campo no relatório

Com base nestas informações gostaria de saber se existe algum modelo matemático ou algoritmo que consiga calcular a posição de cada campo com base na sua ordem e no número de colunas que o mesmo precisa.

No seu exemplo a saída nao deveria ser [1,3,4,6,7,8] ?
Pelo menos foi o que eu entendi da sua explicaçao.

Note que:

  • o array de saída tem o mesmo tamanho do array de entrada
  • o array de saída sempre começa com 1
  • as próximas posiçoes é basicamente a fórmula:
    saida[atual] = saida[anterior] + entrada[atual]

Acho que essa é a lógica que tem que implementar.

Abel o campo “Cliente” ocupa mais do que metade da linha então ele deve ser automaticamente colocado na próxima coluna na linha de baixo.
Vou testar este modelo que enviou, obrigado por enquanto.

Ah, minha fórmula nao vai funcionar entao. Nao tinha entendido essa parte.

Para funcionar terá que levar em consideraçao que campos que ocupam 2 colunas precisam sempre ser posicionados em posiçoes ímpares.