Как сгенерировать правильную скобочную последовательность?

Всем привет! Помогите, пожалуйста, найти ошибку в задаче. Задача из яндекса, на 4-м тесте почему-то падает. Вот условие:

введите сюда описание изображения

Примеры:

введите сюда описание изображения

Вот мой код:

#include <iostream>

using namespace std;

std::string next(std::string &s){
    int cc =0,  co = 0, pc = 0, po = 0, pos = 0;
    
    auto sz = s.size();
    
    for(size_t i = 0; i < sz; ++i){
        if(s[i] == '('){
            ++co;
            
            if(co >= cc + 2){
                pos = i;
                pc = cc;
                po = co;
            }
            
        }else{
            ++cc;
        }
    }
    
    if(pos){
        s = s.substr(0, pos) + ")" + std::string(co-po+1, '(') + std::string(cc-pc-1, ')');
    }
    
    return s;
}

void gen_next(int n){
    std::string s = std::string(n, '(') + std::string(n, ')');
    std::cout << s << std::endl;
    
    std::string s_next;
    while(s_next != s){
        s_next = next(s);
        std::cout << s_next << std::endl;
        s = s_next;
        s_next = next(s_next);
    };
}

int main()
{
    int n;
    std::cin >> n;
    if(n != 0)
    {
        gen_next(n);
    }else{
        std::cout << "";
    }

    return 0;
}

Ответы (0 шт):