#include <iostream>
#include <string>
#include<stack>
using namespace std;
int operand(char ch)
{
return (ch>='a' && ch<='z') || (ch>='A' && ch<='Z');
}
int prec(char ch)
{
switch(ch)
{
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
}
return -1;
}
int postfix(string infix,stack <char> s)
{
for(int i=0; i<infix.length(); i++)
{
if(operand(infix[i]))
cout<<infix[i];
else if(infix[i]=='(')
s.push(infix[i]);
else if(infix[i]==')')
{
while((!s.empty()) && (s.top()!='('))
{
if(s.top()!='(' && s.top()!=')')
cout<<s.top();
s.pop();
}
if(s.empty() && s.top()!='(')
return 0;
}
else
{
while((!s.empty()) && prec(infix[i])<=prec(s.top()))
{
if(s.top()!='(' && s.top()!=')')
cout<<s.top();
s.pop();
}
s.push(infix[i]);
}
}
while(!(s.empty()))
{
if(s.top()!='(' && s.top()!=')')
cout<<s.top();
s.pop();
}
}
int balance(string infix)
{
stack <char> s;
for(int i=0; i<infix.length(); i++)
{
if(infix[i] == '(' || infix[i] == '[' || infix[i] == '{' )
{
s.push(infix[i]);
}
else if(infix[i] == ')' || infix[i] == '}' || infix[i] == ']' )
{
if(s.empty())
return 0;
else if(infix[i] == ')')
{
if(s.top() == '(')
{
s.pop();
}
else
return 0;
}
else if(infix[i] == ']')
{
if(s.top() == '[')
{
s.pop();
}
else
return 0;
}
else if(infix[i] == '}')
{
if(s.top() == '{')
{
s.pop();
}
else
return 0;
}
}
}
if(s.empty())
return 1;
else
return 0;
}
int main() {
string infix;
cin>>infix;
//stack <char> s;
//postfix(infix,s);
int ans = balance(infix);
cout<<ans;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZTxzdGFjaz4JCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG9wZXJhbmQoY2hhciBjaCkKewogICByZXR1cm4gKGNoPj0nYScgJiYgY2g8PSd6JykgfHwgKGNoPj0nQScgJiYgY2g8PSdaJyk7Cn0KCmludCBwcmVjKGNoYXIgY2gpCnsKICBzd2l0Y2goY2gpCiAgewogICAgY2FzZSAnKyc6CiAgICBjYXNlICctJzoKCXJldHVybiAxOwogICAgY2FzZSAnKic6CiAgICBjYXNlICcvJzoKCXJldHVybiAyOwogICAgY2FzZSAnXic6CglyZXR1cm4gMzsKICB9CiAgcmV0dXJuIC0xOwp9CmludCBwb3N0Zml4KHN0cmluZyBpbmZpeCxzdGFjayA8Y2hhcj4gcykKewoJZm9yKGludCBpPTA7IGk8aW5maXgubGVuZ3RoKCk7IGkrKykKCXsKCSAgIGlmKG9wZXJhbmQoaW5maXhbaV0pKQoJICAgIGNvdXQ8PGluZml4W2ldOwoJICAgZWxzZSBpZihpbmZpeFtpXT09JygnKQoJICAgIHMucHVzaChpbmZpeFtpXSk7CgkgICBlbHNlIGlmKGluZml4W2ldPT0nKScpCgkgICB7CgkgICAJd2hpbGUoKCFzLmVtcHR5KCkpICYmIChzLnRvcCgpIT0nKCcpKQoJICAgCXsKCSAgIAkgIGlmKHMudG9wKCkhPScoJyAmJiBzLnRvcCgpIT0nKScpCQoJICAgCSAgY291dDw8cy50b3AoKTsKCSAgIAkgIHMucG9wKCk7CgkgICAJfQoJICAgCWlmKHMuZW1wdHkoKSAmJiBzLnRvcCgpIT0nKCcpCgkgICAJcmV0dXJuIDA7CgkgICB9CgkgICBlbHNlCgkgICB7CgkgICAgICB3aGlsZSgoIXMuZW1wdHkoKSkgJiYgcHJlYyhpbmZpeFtpXSk8PXByZWMocy50b3AoKSkpCgkgICAgICB7CgkgICAgICAJaWYocy50b3AoKSE9JygnICYmIHMudG9wKCkhPScpJykKCSAgICAgIAljb3V0PDxzLnRvcCgpOwoJICAgICAgCXMucG9wKCk7CgkgICAgICAJCgkgICAgICB9CgkgICAgICBzLnB1c2goaW5maXhbaV0pOwoJICAgICAKCSAgIH0KCSAgIAoJICAgCgl9Cgl3aGlsZSghKHMuZW1wdHkoKSkpCgl7CgkJaWYocy50b3AoKSE9JygnICYmIHMudG9wKCkhPScpJykKCQljb3V0PDxzLnRvcCgpOwoJCXMucG9wKCk7Cgl9Cn0KCmludCBiYWxhbmNlKHN0cmluZyBpbmZpeCkKewoJc3RhY2sgPGNoYXI+IHM7Cglmb3IoaW50IGk9MDsgaTxpbmZpeC5sZW5ndGgoKTsgaSsrKQoJewoJCQoJCWlmKGluZml4W2ldID09ICcoJyB8fCBpbmZpeFtpXSA9PSAnWycgfHwgaW5maXhbaV0gPT0gJ3snICkKCQkgewoJCSAJcy5wdXNoKGluZml4W2ldKTsKCQkgfQoJCWVsc2UgaWYoaW5maXhbaV0gPT0gJyknIHx8IGluZml4W2ldID09ICd9JyB8fCBpbmZpeFtpXSA9PSAnXScgKQoJCSB7CgkJIAlpZihzLmVtcHR5KCkpCgkJIAkgcmV0dXJuIDA7CgkJIAllbHNlIGlmKGluZml4W2ldID09ICcpJykKCQkgCXsKCQkJIAlpZihzLnRvcCgpID09ICcoJykKCQkJIAkgIHsKCQkJIAkgIAlzLnBvcCgpOwoJCQkgCSAgfQoJCQkgCSAgZWxzZSAKCQkgCQkJcmV0dXJuIDA7CgkJCSAJICAKCQkgCX0KCQkgCWVsc2UgaWYoaW5maXhbaV0gPT0gJ10nKQoJCSAJewoJCQkgCWlmKHMudG9wKCkgPT0gJ1snKQoJCQkgCSAgewoJCQkgCSAgCXMucG9wKCk7CgkJCSAJICB9CgkJCSAJICBlbHNlIAoJCSAJCQlyZXR1cm4gMDsKCQkJIAkgIAoJCSAJfQoJCSAJZWxzZSBpZihpbmZpeFtpXSA9PSAnfScpCgkJIAl7CgkJCSAJaWYocy50b3AoKSA9PSAneycpCgkJCSAJICB7CgkJCSAJICAJcy5wb3AoKTsKCQkJIAkgIH0KCQkJIAkgIGVsc2UgCgkJIAkJCXJldHVybiAwOwoJCQkgCSAgCgkJIAl9CgkJIAkKCQkJIAoJCSB9CgkJIAoJfQoJaWYocy5lbXB0eSgpKQoJIHJldHVybiAxOwoJZWxzZQoJIHJldHVybiAwOwoJIAp9CmludCBtYWluKCkgewoJc3RyaW5nIGluZml4OwoJY2luPj5pbmZpeDsKCS8vc3RhY2sgPGNoYXI+IHM7CgkvL3Bvc3RmaXgoaW5maXgscyk7CglpbnQgYW5zID0gYmFsYW5jZShpbmZpeCk7Cgljb3V0PDxhbnM7CglyZXR1cm4gMDsKfQ==
I2luY2x1ZGUgJmx0O2lvc3RyZWFtJmd0OwojaW5jbHVkZSAmbHQ7c3RyaW5nJmd0OwojaW5jbHVkZSZsdDtzdGFjayZndDsJCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG9wZXJhbmQoY2hhciBjaCkKewogICByZXR1cm4gKGNoJmd0Oz0nYScgJmFtcDsmYW1wOyBjaCZsdDs9J3onKSB8fCAoY2gmZ3Q7PSdBJyAmYW1wOyZhbXA7IGNoJmx0Oz0nWicpOwp9CgppbnQgcHJlYyhjaGFyIGNoKQp7CiAgc3dpdGNoKGNoKQogIHsKICAgIGNhc2UgJysnOgogICAgY2FzZSAnLSc6CglyZXR1cm4gMTsKICAgIGNhc2UgJyonOgogICAgY2FzZSAnLyc6CglyZXR1cm4gMjsKICAgIGNhc2UgJ14nOgoJcmV0dXJuIDM7CiAgfQogIHJldHVybiAtMTsKfQppbnQgcG9zdGZpeChzdHJpbmcgaW5maXgsc3RhY2sgJmx0O2NoYXImZ3Q7IHMpCnsKCWZvcihpbnQgaT0wOyBpJmx0O2luZml4Lmxlbmd0aCgpOyBpKyspCgl7CgkgICBpZihvcGVyYW5kKGluZml4W2ldKSkKCSAgICBjb3V0Jmx0OyZsdDtpbmZpeFtpXTsKCSAgIGVsc2UgaWYoaW5maXhbaV09PScoJykKCSAgICBzLnB1c2goaW5maXhbaV0pOwoJICAgZWxzZSBpZihpbmZpeFtpXT09JyknKQoJICAgewoJICAgCXdoaWxlKCghcy5lbXB0eSgpKSAmYW1wOyZhbXA7IChzLnRvcCgpIT0nKCcpKQoJICAgCXsKCSAgIAkgIGlmKHMudG9wKCkhPScoJyAmYW1wOyZhbXA7IHMudG9wKCkhPScpJykJCgkgICAJICBjb3V0Jmx0OyZsdDtzLnRvcCgpOwoJICAgCSAgcy5wb3AoKTsKCSAgIAl9CgkgICAJaWYocy5lbXB0eSgpICZhbXA7JmFtcDsgcy50b3AoKSE9JygnKQoJICAgCXJldHVybiAwOwoJICAgfQoJICAgZWxzZQoJICAgewoJICAgICAgd2hpbGUoKCFzLmVtcHR5KCkpICZhbXA7JmFtcDsgcHJlYyhpbmZpeFtpXSkmbHQ7PXByZWMocy50b3AoKSkpCgkgICAgICB7CgkgICAgICAJaWYocy50b3AoKSE9JygnICZhbXA7JmFtcDsgcy50b3AoKSE9JyknKQoJICAgICAgCWNvdXQmbHQ7Jmx0O3MudG9wKCk7CgkgICAgICAJcy5wb3AoKTsKCSAgICAgIAkKCSAgICAgIH0KCSAgICAgIHMucHVzaChpbmZpeFtpXSk7CgkgICAgIAoJICAgfQoJICAgCgkgICAKCX0KCXdoaWxlKCEocy5lbXB0eSgpKSkKCXsKCQlpZihzLnRvcCgpIT0nKCcgJmFtcDsmYW1wOyBzLnRvcCgpIT0nKScpCgkJY291dCZsdDsmbHQ7cy50b3AoKTsKCQlzLnBvcCgpOwoJfQp9CgppbnQgYmFsYW5jZShzdHJpbmcgaW5maXgpCnsKCXN0YWNrICZsdDtjaGFyJmd0OyBzOwoJZm9yKGludCBpPTA7IGkmbHQ7aW5maXgubGVuZ3RoKCk7IGkrKykKCXsKCQkKCQlpZihpbmZpeFtpXSA9PSAnKCcgfHwgaW5maXhbaV0gPT0gJ1snIHx8IGluZml4W2ldID09ICd7JyApCgkJIHsKCQkgCXMucHVzaChpbmZpeFtpXSk7CgkJIH0KCQllbHNlCgkJIHsKCQkgCWlmKHMuZW1wdHkoKSkKCQkgCSByZXR1cm4gMDsKCQkgCWVsc2UgaWYoaW5maXhbaV0gPT0gJyknKQoJCSAJewoJCQkgCWlmKHMudG9wKCkgPT0gJygnKQoJCQkgCSAgewoJCQkgCSAgCXMucG9wKCk7CgkJCSAJICB9CgkJCSAJICBlbHNlIAoJCSAJCQlyZXR1cm4gMDsKCQkJIAkgIAoJCSAJfQoJCSAJZWxzZSBpZihpbmZpeFtpXSA9PSAnXScpCgkJIAl7CgkJCSAJaWYocy50b3AoKSA9PSAnWycpCgkJCSAJICB7CgkJCSAJICAJcy5wb3AoKTsKCQkJIAkgIH0KCQkJIAkgIGVsc2UgCgkJIAkJCXJldHVybiAwOwoJCQkgCSAgCgkJIAl9CgkJIAllbHNlIGlmKGluZml4W2ldID09ICd9JykKCQkgCXsKCQkJIAlpZihzLnRvcCgpID09ICd7JykKCQkJIAkgIHsKCQkJIAkgIAlzLnBvcCgpOwoJCQkgCSAgfQoJCQkgCSAgZWxzZSAKCQkgCQkJcmV0dXJuIDA7CgkJCSAJICAKCQkgCX0KCQkgCQoJCQkgCgkJIH0KCX0KCWlmKHMuZW1wdHkoKSkKCSByZXR1cm4gMTsKCWVsc2UKCSByZXR1cm4gMDsKCSAKfQppbnQgbWFpbigpIHsKCXN0cmluZyBpbmZpeDsKCWNpbiZndDsmZ3Q7aW5maXg7CgkvL3N0YWNrICZsdDtjaGFyJmd0OyBzOwoJLy9wb3N0Zml4KGluZml4LHMpOwoJaW50IGFucyA9IGJhbGFuY2UoaW5maXgpOwoJY291dCZsdDsmbHQ7YW5zOwoJcmV0dXJuIDA7Cn0=
#include <iostream>
#include <string>
#include<stack>
using namespace std;
int operand(char ch)
{
return (ch>='a' && ch<='z') || (ch>='A' && ch<='Z');
}
int prec(char ch)
{
switch(ch)
{
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
}
return -1;
}
int postfix(string infix,stack <char> s)
{
for(int i=0; i<infix.length(); i++)
{
if(operand(infix[i]))
cout<<infix[i];
else if(infix[i]=='(')
s.push(infix[i]);
else if(infix[i]==')')
{
while((!s.empty()) && (s.top()!='('))
{
if(s.top()!='(' && s.top()!=')')
cout<<s.top();
s.pop();
}
if(s.empty() && s.top()!='(')
return 0;
}
else
{
while((!s.empty()) && prec(infix[i])<=prec(s.top()))
{
if(s.top()!='(' && s.top()!=')')
cout<<s.top();
s.pop();
}
s.push(infix[i]);
}
}
while(!(s.empty()))
{
if(s.top()!='(' && s.top()!=')')
cout<<s.top();
s.pop();
}
}
int balance(string infix)
{
stack <char> s;
for(int i=0; i<infix.length(); i++)
{
if(infix[i] == '(' || infix[i] == '[' || infix[i] == '{' )
{
s.push(infix[i]);
}
else
{
if(s.empty())
return 0;
else if(infix[i] == ')')
{
if(s.top() == '(')
{
s.pop();
}
else
return 0;
}
else if(infix[i] == ']')
{
if(s.top() == '[')
{
s.pop();
}
else
return 0;
}
else if(infix[i] == '}')
{
if(s.top() == '{')
{
s.pop();
}
else
return 0;
}
}
}
if(s.empty())
return 1;
else
return 0;
}
int main() {
string infix;
cin>>infix;
//stack <char> s;
//postfix(infix,s);
int ans = balance(infix);
cout<<ans;
return 0;
}