fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 2e5 + 9;
  4. const int mod = 1e9 + 9;
  5.  
  6. int main(){
  7. ios::sync_with_stdio(0);
  8. cin.tie(0);
  9. cout.tie(0);
  10. //freopen("machines.in", "r", stdin);
  11. //freopen("output.txt", "w", stdout);
  12. string s;
  13. getline(cin , s);
  14. stack<char> st;
  15. string ans = "";
  16. map<char,char> mp;
  17. mp['('] = ')';
  18. mp['['] = ']';
  19. mp['{'] = '}';
  20. for(int i = 0; i < s.size(); i++){
  21. if(!((s[i] == '(' || s[i] == '[' || s[i] == '{') || (s[i] == ')' || s[i] == ']' || s[i] == '}'))){
  22. ans.push_back(s[i]);
  23. }else if(s[i] == '(' || s[i] == '[' || s[i] == '{'){
  24. ans.push_back(s[i]);
  25. st.push(s[i]);
  26. }else{
  27. if(st.empty()){
  28. if(s[i] == '}'){
  29. ans.push_back('{');
  30. ans.push_back('}');
  31. }else if(s[i] == ']'){
  32. ans.push_back('[');
  33. ans.push_back(']');
  34. }else if(s[i] == ')'){
  35. ans.push_back('(');
  36. ans.push_back(')');
  37. }
  38. }else if(mp[st.top()] == s[i]){
  39. ans.push_back(s[i]);
  40. st.pop();
  41. }else{
  42. bool test = 0;
  43. while(!st.empty()){
  44. if(mp[st.top()] != s[i]){
  45. ans.push_back(mp[st.top()]);
  46. st.pop();
  47. }else{
  48. test = 1;
  49. ans.push_back(s[i]);
  50. st.pop();
  51. break;
  52. }
  53. }
  54. if(!test){
  55. if(s[i] == '}'){
  56. ans.push_back('{');
  57. ans.push_back('}');
  58. }else if(s[i] == ']'){
  59. ans.push_back('[');
  60. ans.push_back(']');
  61. }else if(s[i] == ')'){
  62. ans.push_back('(');
  63. ans.push_back(')');
  64. }
  65. }
  66. }
  67. }
  68. }
  69. while(!st.empty()){
  70. ans.push_back(mp[st.top()]);
  71. st.pop();
  72. }
  73. cout << ans << "\n";
  74. return 0;
  75. }
Success #stdin #stdout 0.01s 5344KB
stdin
Standard input is empty
stdout