/* C++ program to implement basic stack
operations */
#include<bits/stdc++.h>
using namespace std;
#define MAX 1000
class Stack
{
int top;
public:
int a[MAX]; //Maximum size of Stack
Stack() { top = -1; }
bool push(int x);
int pop();
bool isEmpty();
};
bool Stack::push(int x)
{
if (top >= (MAX-1))
{
cout << "Stack Overflow";
return false;
}
else
{
a[++top] = x;
return true;
}
}
int Stack::pop()
{
if (top < 0)
{
cout << "Stack Underflow";
return 0;
}
else
{
int x = a[top--];
return x;
}
}
bool Stack::isEmpty()
{
return (top < 0);
}
// Driver program to test above functions
int main()
{
struct Stack s;
s.push(10);
s.push(20);
s.push(30);
cout << s.pop() << " Popped from stack\n";
return 0;
}
LyogQysrIHByb2dyYW0gdG8gaW1wbGVtZW50IGJhc2ljIHN0YWNrCiAgIG9wZXJhdGlvbnMgKi8KI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTUFYIDEwMDAKCmNsYXNzIFN0YWNrCnsKICAgIGludCB0b3A7CnB1YmxpYzoKICAgIGludCBhW01BWF07ICAgIC8vTWF4aW11bSBzaXplIG9mIFN0YWNrCgogICAgU3RhY2soKSAgeyB0b3AgPSAtMTsgfQogICAgYm9vbCBwdXNoKGludCB4KTsKICAgIGludCBwb3AoKTsKICAgIGJvb2wgaXNFbXB0eSgpOwp9OwoKYm9vbCBTdGFjazo6cHVzaChpbnQgeCkKewogICAgaWYgKHRvcCA+PSAoTUFYLTEpKQogICAgewogICAgICAgIGNvdXQgPDwgIlN0YWNrIE92ZXJmbG93IjsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgYVsrK3RvcF0gPSB4OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9CgppbnQgU3RhY2s6OnBvcCgpCnsKICAgIGlmICh0b3AgPCAwKQogICAgewogICAgICAgIGNvdXQgPDwgIlN0YWNrIFVuZGVyZmxvdyI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaW50IHggPSBhW3RvcC0tXTsKICAgICAgICByZXR1cm4geDsKICAgIH0KfQoKYm9vbCBTdGFjazo6aXNFbXB0eSgpCnsKICAgIHJldHVybiAodG9wIDwgMCk7Cn0KCi8vIERyaXZlciBwcm9ncmFtIHRvIHRlc3QgYWJvdmUgZnVuY3Rpb25zCmludCBtYWluKCkKewogICAgc3RydWN0IFN0YWNrIHM7CiAgICBzLnB1c2goMTApOwogICAgcy5wdXNoKDIwKTsKICAgIHMucHVzaCgzMCk7CgogICAgY291dCA8PCBzLnBvcCgpIDw8ICIgUG9wcGVkIGZyb20gc3RhY2tcbiI7CgogICAgcmV0dXJuIDA7Cn0=