fork download
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. class stack {
  5. private:
  6. char* strArray;
  7. int size = 0 ;
  8. public:
  9. void push(char ch)
  10. {
  11. char* strTemp = new char[size];
  12. for (int i = 0; i < size; i++)
  13. strTemp[i] = strArray[i];
  14.  
  15. strArray = new char[size + 1];
  16. for (int i = 0; i < size; i++)
  17. strArray[i] = strTemp[i];
  18. size++;
  19. strArray[size - 1] = ch;
  20. }
  21. void pop()
  22. {
  23. char* strTemp = new char[size - 1];
  24. for (int i = 0; i < size - 1; i++)
  25. strTemp[i] = strArray[i];
  26.  
  27. strArray = new char[size - 1];
  28. for (int i = 0; i < size - 1; i++)
  29. strArray[i] = strTemp[i];
  30. size--;
  31. }
  32. char peek()
  33. {
  34. if (size == 0)return 0;
  35. else return strArray[size - 1];
  36. }
  37. int Size() { return size; }
  38.  
  39. };
  40. int main()
  41. {
  42. stack strStack;
  43. string input;
  44. while (cin >> input)
  45. {
  46. string standard;
  47. int canDo = 1;
  48. standard.resize(input.size());
  49. for (int i = 0; i < input.size(); i++)standard[i] = 65 + i;
  50. for (int i = 0; i < input.size(); i++)
  51. {
  52. int showedCount= 0;
  53. if (i < input.size() -1)
  54. {
  55. if ((input[i + 1] - input[i]) < -1)
  56. {
  57. for (int k = 0; k < i; k++)if (input[k] > input[i+1] && input[k] < input[i])showedCount++;
  58. if (showedCount != input[i] - input[i+1] - 1)canDo = 0;
  59. }
  60. }
  61. }
  62. if (!canDo)cout << "NO\n";
  63. else
  64. {
  65. cout << "YES\n";
  66. int Count = 0;
  67. int tempSize = 0;
  68. for (int i = 0; i < input.size(); i++)
  69. {
  70. strStack.push(65 + i);
  71. cout << "push" << strStack.peek() << " ";
  72. tempSize = strStack.Size();
  73. if (strStack.peek() == input[Count])
  74. {
  75. for (int k = 0; k < tempSize; k++)
  76. {
  77. if (strStack.peek() == input[Count] && (Count + k < input.size()))
  78. {
  79. cout << "pop" << strStack.peek() << " ";
  80. strStack.pop();
  81. Count++;
  82. }
  83. }
  84. }
  85. }
  86. tempSize = strStack.Size();
  87. for (int i = 0; i < tempSize; i++)
  88. {
  89. cout << "pop" << strStack.peek() << " ";
  90. strStack.pop();
  91. }
  92. cout << "\n";
  93. }
  94.  
  95. }
  96. }
Success #stdin #stdout 0s 4524KB
stdin
ABC
CAB
stdout
YES
pushA popA pushB popB pushC popC 
NO