#include <iostream> #include <stack> using namespace std; class GetMinStack{ public: void push(int x); void pop(); int top(); int getmin(); private: stack<int> S; stack<int> temp; }; void GetMinStack::push(int x) { if(S.empty()) { temp.push(x); S.push(x); } else { if(x < temp.top()) { temp.push(x); S.push(x); } else { temp.push(temp.top()); S.push(x); } } } void GetMinStack::pop() { S.pop(); temp.pop(); } int GetMinStack::top() { return S.top(); } int GetMinStack::getmin() { return temp.top(); } int main() { GetMinStack TestStack; TestStack.push(-2); cout << TestStack.top() << endl; cout << TestStack.getmin() << endl; TestStack.push(0); cout << TestStack.getmin() << endl; TestStack.push(-6); cout << TestStack.getmin() << endl; TestStack.pop(); cout << TestStack.getmin() << endl; return 0; }