#include using namespace std;
int main()
{
int finish = 0;
int res = 0;
string a;
cin >> a;
finish = a.length();
for (int x = 0; x < a.length(); x++)
{
if (a[x] == '(')
{
res++;
}
else
{
res--;
if (res < 0)
{
res++;
finish--;
}
}
}
finish -= res;
cout << finish;
}
Как сделать так, чтобы программа быстрее работала (задача: ограничение по времени на тест 5 seconds
ограничение по памяти на тест 256 megabytes
ввод стандартный ввод
вывод стандартный вывод
Напомним, что скобочная последовательность называется правильной, если путем вставки в нее символов «+» и «1» можно получить из нее корректное математическое выражение. Например, последовательности «(())()», «()» и «(()(()))» — правильные, в то время как «)(», «(()» и «(()))(» — нет.
Однажды Васе попалась скобочная последовательность. Он решил удалить из нее некоторые скобки так, чтобы последовательность стала правильной. Какую наибольшую длину может иметь получившаяся правильная скобочная последовательность?
Входные данные
В первой строке входного файла записана непустая строка, состоящая из символов «(» и «)». Её длина не превосходит 10(в 6 степени).
Выходные данные
Выведите длину наибольшей правильной скобочной подпоследовательности.
Примеры
входные данные
(()))(
выходные данные
4
приер2:
входные данные
((()())
выходные данные
6