Как сгенерировать правильную скобочную последовательность?
Всем привет! Помогите, пожалуйста, найти ошибку в задаче. Задача из яндекса, на 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;
}

