#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
using namespace std;
char per(char a)
{
if(a == '<') return '>';
if(a == '{') return '}';
if(a == '[') return ']';
if(a == '(') return ')';
}
int main()
{
int len,i,ans,f;
char s[1000005];
while(scanf("%s",s)!=EOF)
{
ans = 0;
f = 0;
stack<char>st;
len = strlen(s);
for(i = 0;i < len;i++)
{
if(s[i] == '<'||s[i] == '{'||s[i] == '['||s[i] == '(')
{
st.push(s[i]);
}
else if(!st.empty())
{
if(per(st.top())!= s[i])
ans++;
st.pop();
}
else if(st.empty())
{
printf("Impossible\n",ans);
f = 1;
break;
}
}
if(!st.empty())
{
f = 1;
printf("Impossible\n");
}
if(f)
continue;
printf("%d\n",ans);
}
return 0;
}
Codeforces 612C Replace To Make Regular Bracket Sequence stack栈 的应用
最新推荐文章于 2020-03-12 18:53:08 发布