Регистрация
Войти
Стать экспертом Правила
Информатика

#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

ОТВЕТЫ
#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;
  }


107
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам