Advertisement
YamanQD

612/C : Replace To Make Regular Bracket Sequence

Feb 28th, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5.  
  6. stack<char> x;
  7. string s;
  8.  
  9. int main(){
  10.  
  11.     ll ans = 0;
  12.  
  13.     cin >> s;
  14.     if(s.size()%2 == 1){
  15.         cout << "Impossible";
  16.         return 0;
  17.     }
  18.     for(int i=0;i<s.size();i++){
  19.         if(x.empty())
  20.             x.push(s[i]);
  21.         else if(x.top() == '('){
  22.             switch(s[i]){
  23.                 case ')':
  24.                     x.pop();
  25.                     break;
  26.                 case '}':
  27.                 case ']':
  28.                 case '>':
  29.                     ans++;
  30.                     x.pop();
  31.                     break;
  32.                 default:
  33.                     x.push(s[i]);
  34.                     break;
  35.             }
  36.         }
  37.         else if(x.top() == '{'){
  38.             switch(s[i]){
  39.                 case '}':
  40.                     x.pop();
  41.                     break;
  42.                 case ')':
  43.                 case ']':
  44.                 case '>':
  45.                     ans++;
  46.                     x.pop();
  47.                     break;
  48.                 default:
  49.                     x.push(s[i]);
  50.                     break;
  51.             }
  52.         }
  53.         else if(x.top() == '['){
  54.             switch(s[i]){
  55.                 case ']':
  56.                     x.pop();
  57.                     break;
  58.                 case ')':
  59.                 case '}':
  60.                 case '>':
  61.                     ans++;
  62.                     x.pop();
  63.                     break;
  64.                 default:
  65.                     x.push(s[i]);
  66.                     break;
  67.             }
  68.         }
  69.         else if(x.top() == '<'){
  70.             switch(s[i]){
  71.                 case '>':
  72.                     x.pop();
  73.                     break;
  74.                 case ')':
  75.                 case ']':
  76.                 case '}':
  77.                     ans++;
  78.                     x.pop();
  79.                     break;
  80.                 default:
  81.                     x.push(s[i]);
  82.                     break;
  83.             }
  84.         }
  85.         else{
  86.             cout << "Impossible";
  87.             return 0;
  88.         }
  89.  
  90.     }
  91.     if(x.size()==0)
  92.         cout << ans;
  93.     else
  94.         cout << "Impossible";
  95.  
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement