Ограничения: время – 1s/2s, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)
Рассмотрим последовательность из открывающихся и закрывающихся круглых скобок.
Назовём такую последовательность скобочной. Скобочная последовательность
называется правильной, если она может быть построена
по следующим законам:
- пустая строка является правильной скобочной последовательностью;
- если S –- правильная скобочная последовательность, то (S) – тоже правильная скобочная последовательность;
- если A и B –- правильные скобочные последовательности, то AB – тоже правильная скобочная последовательность.
Примеры правильных скобочных последовательностей —
"()", "((()))", "()()()", "((()())())(())".
Неформально говоря, правильная скобочная последовательность — это
последовательность скобок, которая может быть получена из некоторого
арифметического выражения удалением из него всего, кроме скобок.
Рассмотрим следующий алгоритм: на каждом шаге выбирается подстрока скобочной
последовательности и скобки в ней меняются на противоположные, то есть все символы '('
в этой подстроке заменяются на ')', а все символы ')' – на '('.
Требуется написать программу, которая по скобочной последовательности рассчитает
минимальное количество шагов N, необходимое для превращения её в правильную.
Ввод
Во входном файле содержится скобочная последовательность.
Вывод
В выходном файле должно содержаться число N, за которым следуют N
пар чисел li , задающих позиции первого и последнего символа подстроки,
в которой на i-ом шаге меняются скобки.
Если существует несколько оптимальных решений, выведите любое из них.
Если решения не существует, выведите единственное число -1.
Ограничения
Длина исходной последовательности находится в диапазоне от 1 до 3000 символов.
Пример ввода 3
)((()((()((()(((
Пример вывода 3
2
1 16
2 7
Источник: А. Жуплев, ДВГУ, Весенний турнир, 2007