Ваша проблема тесно связана с декодированием BWT.
Если я правильно понимаю вашу проблему, вы получите первый массив в виде потока.
Тогда, если у вас есть второй массив в памяти, вам просто нужно создать его «обратный массив». Так что, например:
Второй массив: 1, 9, 3, 8, 5, 4, 2, 6, 7
Становится
Обратный второй массив: 1, 7, 3, 6, 5, 8, 9, 4, 2
Итак, теперь, получив ваш поток, вы сразу знаете, где разместить каждого персонажа.