#include using namespace std; struct Element { int value; Element* prev = 0; }; struct Stack { Element* front = 0; Element* back = 0; int stack_size = 0; void push(int n) { Element* new_elem = new Element(); new_elem->value = n; if (stack_size > 0) { new_elem->prev = back; } else { front = new_elem; } back = new_elem; stack_size++; } int pop() { int result = back->value; Element* old_back = back; if (stack_size > 1) { back = back->prev; } else { front = 0; back = 0; } delete old_back; stack_size--; return result; } int top() { return back->value; } int size() { return stack_size; } void clear() { while (size() > 0) { pop(); } } }; int main() { Stack st; string s; cin >> s; while (s != "exit") { if (s == "push") { int n; cin >> n; st.push(n); cout << "ok\n"; } else if (s == "pop") { cout << st.pop() << '\n'; } else if (s == "back") { cout << st.top() << '\n'; } else if (s == "size") { cout << st.size() << '\n'; } else if (s == "clear") { st.clear(); cout << "ok\n"; } cin >> s; } cout << "bye\n"; return 0; }