aboutsummaryrefslogtreecommitdiff
path: root/codechef/DenseBracketSequence/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'codechef/DenseBracketSequence/main.cpp')
-rw-r--r--codechef/DenseBracketSequence/main.cpp24
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;
}
}
-
-