Неверная строка rs[i][j] = a[i][N-1-j];
. Потенциально выписывает границы выделенной строки. Кажется, что все хорошо, когда вы печатаете его сразу после записи, но позже другой код будет использовать пространство для других вещей. Поскольку вы пишете отдельные символы по порядку в строку, вы можете использовать push_back.
rs[i].push_back(a[i][N-1-j]);
Это должно выделить больше места для строки, как вам нужно.