martarubtsova

Untitled

Feb 8th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 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 (s[i] == '(')
  63.             {
  64.                 if (i >= 0 && i < s.length() && s[i] == '(' && open > 0)
  65.                 {
  66.                     open--;
  67.                     s.erase(i, 1);
  68.                 }
  69.             }
  70.             else
  71.                 if (i >= 0 && i < s.length() && s[i] == ')' && close > 0)
  72.                 {
  73.                     close--;
  74.                     s.erase(i, 1);
  75.                 }
  76.             i--;
  77.         }
  78.         string t = "";
  79.         for (int j = 0; j < m * 2; j++)
  80.             if (j % 2 == 0)
  81.                 t += '(';
  82.             else
  83.                 t += ')';
  84.         s.insert(f, t);
  85.         cout << s;
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment