codreforces C. Replace To Make Regular Bracket Sequence(栈)
来源:互联网 发布:mysql怎么删除库 编辑:程序博客网 时间:2024/06/18 07:49
You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). There are two types of brackets: opening and closing. You can replace any bracket by another of the same type. For example, you can replace < by the bracket {, but you can't replace it by ) or >.
The following definition of a regular bracket sequence is well-known, so you can be familiar with it.
Let's define a regular bracket sequence (RBS). Empty string is RBS. Let s1 and s2 be a RBS then the strings <s1>s2, {s1}s2, [s1]s2,(s1)s2 are also RBS.
For example the string "[[(){}]<>]" is RBS, but the strings "[)()" and "][()()" are not.
Determine the least number of replaces to make the string s RBS.
The only line contains a non empty string s, consisting of only opening and closing brackets of four kinds. The length of s does not exceed 106.
If it's impossible to get RBS from s print Impossible.
Otherwise print the least number of replaces needed to get RBS from s.
[<}){}
2
{()}[]
0
]]
Impossible
#include<cstdio>#include<cstring>#include<stack>using namespace std;int main(){ char s[1000000+10]; while(~scanf("%s",s)) { int falg = 0; int l = strlen(s); if(l % 2 == 1) printf("Impossible\n"); else { stack<char> st; for(int i = 0 ; i < l ; i++) { if(st.empty()) st.push(s[i]); else { if(s[i] == '(' || s[i] == '<' || s[i] == '{' || s[i] == '[') st.push(s[i]); else if(s[i] == ')' && st.top() == '(') st.pop(); else if(s[i] == ']' && st.top() == '[') st.pop(); else if(s[i] == '>' && st.top() == '<') st.pop(); else if(s[i] == '}' && st.top() == '{') st.pop(); else { if(st.top() == '(' || st.top() == '<' ||st.top() == '{' || st.top() == '[') { falg++; st.pop(); } else st.push(s[i]); } } } if(st.empty()) printf("%d\n",falg); else printf("Impossible\n");}}return 0;}
- codreforces C. Replace To Make Regular Bracket Sequence(栈)
- C. Replace To Make Regular Bracket Sequence
- Replace To Make Regular Bracket Sequence 【栈】
- Codeforces 612C Replace To Make Regular Bracket Sequence【栈】
- CodeForces 612 C. Replace To Make Regular Bracket Sequence(栈)
- 【CodeForces】612C - Replace To Make Regular Bracket Sequence(栈,括号配对问题)
- 【Codeforces】-612C-Replace To Make Regular Bracket Sequence(括号配对,栈)
- CodeForces 612C Replace To Make Regular Bracket Sequence (栈)
- 【Codeforces】-612C-Replace To Make Regular Bracket Sequence(括号配对,栈)
- Codeforces 612C: Replace To Make Regular Bracket Sequence(栈)
- Codeforces 612C: Replace To Make Regular Bracket Sequence(栈)
- 【CodeForces】612C---Replace To Make Regular Bracket Sequence(栈)
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- 【CodeForces】[612C]Replace To Make Regular Bracket Sequence
- CodeForces 612C Replace To Make Regular Bracket Sequence
- Codeforces 612C Replace To Make Regular Bracket Sequence
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- Codeforces-612C-Replace To Make Regular Bracket Sequence 【stack】
- Parencodings
- 如何给一个App起名字?
- openvSwtich学习笔记之--网络篇
- Linux下ifconfig命令输出详解
- openvSwtich学习笔记之------centO…
- codreforces C. Replace To Make Regular Bracket Sequence(栈)
- EventBus使用详解(一)——初步使用EventBus
- RequestDispatcher的forward方法
- Create android source branch (创建安装源码分支)
- 入行IT类的第一篇...初学Java感想
- [机器学习笔记]Note13--异常检测
- curl模拟post请求
- 数据结构之线段树
- 正则表达简单入门知识