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