Информатика, вопрос задал ilya1806 , 7 лет назад

#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

Ответы на вопрос

Ответил danulpopov
0
#include <bits/stdc++.h>

using namespace std ;


main()
{
string s;
cin >> s;
int cnt = 0, ans = 0;
for(int i = 0; i < s.size(); i++)
    if(s[i] == '(')
       cnt++;
    else
        if(cnt)
        {
            cnt--;
            ans+=2;
        }
    cout << ans;
  }


Ответил ilya1806
0
:(
Ответил danulpopov
0
Эммм... может Вы не правильно копируете?
Ответил danulpopov
0
26B - Правильная скобочная подпоследовательность GNU C++11 Полное решение 374 мс 5900 КБ
Ответил danulpopov
0
У меня прошла
Ответил ilya1806
0
там на коефе какая - та лажа
Новые вопросы