#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

syav1979 syav1979    3   11.09.2019 19:50    0

Ответы
сымбатым сымбатым  07.10.2020 08:08
#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;
  }
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика