Advertisement
martarubtsova

Untitled

Feb 6th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <string>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     string s;
  11.     int open = 0, open_after = 0, close = 0;
  12.     int close_i, open_i = 0;
  13.     bool flag = true;
  14.     cin >> s;
  15.     for (int i = 0; i < s.length(); i++)
  16.     {
  17.         if (s[i] == '(' && flag)
  18.             open++;
  19.         else
  20.             if (s[i] == ')')
  21.             {
  22.                 flag = false;
  23.                 close++;
  24.             }
  25.             else
  26.                 open_after++;
  27.     }
  28.     if (open_after == 0)
  29.         for (int i = 0; i < 2 * close; i++)
  30.             if (i % 2 == 0)
  31.                 cout << '(';
  32.             else
  33.                 cout << ')';
  34.     else
  35.     {
  36.         int open = 0, close = 0;
  37.         int i = s.length() - 1;
  38.         while (s[i] == ')')
  39.             i--;
  40.         s.erase(i, 1);
  41.         i--;
  42.         while (s[i] == '(')
  43.             i--;
  44.         s.insert(i, "()");
  45.         i += 3;
  46.         int f = i;
  47.         s.erase(s.length() - 1, 1);
  48.         while (i < s.length())
  49.         {
  50.             if (s[i] == '(')
  51.                 open++;
  52.             else
  53.                 close++;
  54.             i++;
  55.         }
  56.         int m = min(open, close);
  57.         open = min(open, close);
  58.         close = min(open, close);
  59.         i = s.length() - 1;
  60.         while (open > 0 || close > 0)
  61.         {
  62.             if (i < s.length() && s[i] == '(' && open > 0)
  63.             {
  64.                 open--;
  65.                 s.erase(i, 1);
  66.             }
  67.             if (i < s.length() && s[i] == ')' && close > 0)
  68.             {
  69.                 close--;
  70.                 s.erase(i, 1);
  71.             }
  72.        
  73.             i--;
  74.        
  75.         }
  76.         string t = "";
  77.         for (int j = 0; j < m * 2; j++)
  78.             if (j % 2 == 0)
  79.                 t += '(';
  80.             else
  81.                 t += ')';
  82.         s.insert(f, t);
  83.         cout << s;
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement