diff options
Diffstat (limited to 'codechef/DenseBracketSequence/main.cpp')
| -rw-r--r-- | codechef/DenseBracketSequence/main.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/codechef/DenseBracketSequence/main.cpp b/codechef/DenseBracketSequence/main.cpp index 6785a12..e26df3c 100644 --- a/codechef/DenseBracketSequence/main.cpp +++ b/codechef/DenseBracketSequence/main.cpp @@ -12,22 +12,14 @@ int main() { cin >> n; string s; cin >> s; - int count = 0; - stack<char> st; - st.push(s[0]); - for(int i = 1; i < n; i++) { - if(s[i] == '(') { - st.push('('); - } - if(s[i] == ')') { - if(st.top() == '(' && !st.empty()){ - st.pop(); - count++; - } - } + int cls = count(s.begin(), s.end(), ')'); + int opn = 0; + int ans = 0; + for (int i = 0; i < n; i++) { + cls -= (s[i] == ')'); + opn += (s[i] == '('); + ans = max(ans, min(opn, cls)); } - cout << count << endl; + cout << n - ans * 2 << endl; } } - - |
