#include <stdio.h>
#include <string.h>
#define MAXSIZE 10
struct stack
{
int stk[MAXSIZE];
int top;
};
struct stack s,m;
void push (struct stack *T, int n)
{
struct stack temp;
temp = *T;
// printf("\nElement %d\n",n);
int y;
if (temp.top == (MAXSIZE - 1))
{
return;
}
else
{
temp.top = temp.top + 1;
temp.stk[temp.top] = n;
}
//printf("Top index %d\n",temp.top);
*T=temp;
return;
}
int pop(struct stack *T){
int y;
struct stack temp;
temp = *T;
if (temp.top == - 1)
{
*T=temp;
return -1;
}
else
{
y=temp.stk[temp.top];
temp.top = temp.top - 1;
*T=temp;
return(y);
}
}
void specialPush(int num){
int y;
if (s.top == (MAXSIZE - 1))
{
return;
}
else if(s.top == -1) //empty stacks
{
//printf("\nFirst time called for %d",num);
push(&s,num);
push(&m,num);
//printf("\nFirst time Ended");
//pushing num in both stack
}
else{//if stack is having elements
y = pop(&m);//pop top to compare
push(&m,y); //push again top element
if(num>y){
//printf("pop if called %d",y);
push(&m,y);
push(&s,num);
}
else{
// printf("pop if called");
push(&m,num);
push(&s,num);
}
}
}
int getMin(){
int y;
y = pop(&m);
//printf("poped%d\n",y);
push(&m,y);
return y;
}
void display (struct stack *T)
{
struct stack temp;
temp = *T;
int i;
if (temp.top == -1)
{
return;
}
else
{
printf ("\nThe status of the stack is\n"); for (i = temp.top; i >= 0; i--)
{
}
}
*T=temp;
}
int main()
{
s.top = -1;
m.top = -1;
specialPush(10);
specialPush(5);
specialPush(20);
specialPush(30);
printf("\nAfter 10,5,20,30\n"); display(&m);
printf("After 10,5,20,30,1 \n"); specialPush(1);
display(&m);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2RlZmluZSBNQVhTSVpFIDEwCgpzdHJ1Y3Qgc3RhY2sKewogICAgaW50IHN0a1tNQVhTSVpFXTsKICAgIGludCB0b3A7Cn07IApzdHJ1Y3Qgc3RhY2sgcyxtOwoKCnZvaWQgcHVzaCAoc3RydWN0IHN0YWNrICpULCBpbnQgbikKewogICAgc3RydWN0IHN0YWNrIHRlbXA7CiAgICB0ZW1wID0gKlQ7CiAgIC8vIHByaW50ZigiXG5FbGVtZW50ICVkXG4iLG4pOwogICAgaW50IHk7CglpZiAodGVtcC50b3AgPT0gKE1BWFNJWkUgLSAxKSkKCXsKCQlwcmludGYgKCJTdGFjayBpcyBGdWxsXG4iKTsKCQlyZXR1cm47Cgl9CgllbHNlCgl7CiAgICAgICAgdGVtcC50b3AgPSB0ZW1wLnRvcCArIDE7CiAgICAgICAgdGVtcC5zdGtbdGVtcC50b3BdID0gbjsKCX0KICAgIC8vcHJpbnRmKCJUb3AgaW5kZXggJWRcbiIsdGVtcC50b3ApOwogICAgKlQ9dGVtcDsKCXJldHVybjsKfQppbnQgcG9wKHN0cnVjdCBzdGFjayAqVCl7CiAgICBpbnQgeTsKICAgIHN0cnVjdCBzdGFjayB0ZW1wOwogICAgdGVtcCA9ICpUOwogICAgCiAgICBpZiAodGVtcC50b3AgPT0gLSAxKQogICAgewoJCXByaW50ZiAoIlN0YWNrIGlzIEVtcHR5XG4iKTsKICAgICAgICAqVD10ZW1wOwoJCXJldHVybiAtMTsKCX0KCWVsc2UKCXsKICAgICAgICB5PXRlbXAuc3RrW3RlbXAudG9wXTsKCQl0ZW1wLnRvcCA9IHRlbXAudG9wIC0gMTsKICAgICAgICAqVD10ZW1wOwoJICAgIHJldHVybih5KTsKCX0KICAgICAKfQoKdm9pZCBzcGVjaWFsUHVzaChpbnQgbnVtKXsKICAgIGludCB5OwogICAgaWYgKHMudG9wID09IChNQVhTSVpFIC0gMSkpCiAgICB7CgkJcHJpbnRmICgiU3RhY2sgaXMgRnVsbFxuIik7CgkJcmV0dXJuOwoJfQogICAgZWxzZSBpZihzLnRvcCA9PSAtMSkgLy9lbXB0eSBzdGFja3MKICAgIHsKICAgICAgICAgICAgLy9wcmludGYoIlxuRmlyc3QgdGltZSBjYWxsZWQgZm9yICVkIixudW0pOwogICAgICAgICAgICBwdXNoKCZzLG51bSk7CiAgICAgICAgICAgIHB1c2goJm0sbnVtKTsKICAgICAgICAgICAgLy9wcmludGYoIlxuRmlyc3QgdGltZSBFbmRlZCIpOwogICAgICAgICAgICAvL3B1c2hpbmcgbnVtIGluIGJvdGggc3RhY2sKICAgIH0KICAgIGVsc2V7Ly9pZiBzdGFjayBpcyBoYXZpbmcgZWxlbWVudHMKICAgICAgICB5ID0gcG9wKCZtKTsvL3BvcCB0b3AgdG8gY29tcGFyZQogICAgICAgIHB1c2goJm0seSk7IC8vcHVzaCBhZ2FpbiB0b3AgZWxlbWVudAogICAgCiAgICAgICAgaWYobnVtPnkpewogICAgICAgICAgICAvL3ByaW50ZigicG9wIGlmIGNhbGxlZCAlZCIseSk7CiAgICAgICAgICAgIHB1c2goJm0seSk7CiAgICAgICAgICAgIHB1c2goJnMsbnVtKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAvLyBwcmludGYoInBvcCBpZiBjYWxsZWQiKTsKICAgICAgICAgICAgcHVzaCgmbSxudW0pOwogICAgICAgICAgICBwdXNoKCZzLG51bSk7CiAgICAgICAgfQogICAgfQp9CgppbnQgZ2V0TWluKCl7CmludCB5Owp5ID0gcG9wKCZtKTsKLy9wcmludGYoInBvcGVkJWRcbiIseSk7CnB1c2goJm0seSk7CnJldHVybiB5Owp9Cgp2b2lkIGRpc3BsYXkgKHN0cnVjdCBzdGFjayAqVCkKewogICAgc3RydWN0IHN0YWNrIHRlbXA7CiAgICB0ZW1wID0gKlQ7CiAgICBpbnQgaTsKCWlmICh0ZW1wLnRvcCA9PSAtMSkKCXsKCQlwcmludGYgKCJTdGFjayBpcyBlbXB0eVxuIik7CgkJcmV0dXJuOwoJfQoJZWxzZQoJewoJCXByaW50ZiAoIlxuVGhlIHN0YXR1cyBvZiB0aGUgc3RhY2sgaXNcbiIpOwoJCWZvciAoaSA9IHRlbXAudG9wOyBpID49IDA7IGktLSkKCQl7CgkJCXByaW50ZiAoIiVkXG4iLCB0ZW1wLnN0a1tpXSk7CgkJfQoJfQoJcHJpbnRmICgiXG4iKTsKICAgICAqVD10ZW1wOwp9CgppbnQgbWFpbigpCnsKICAgIHMudG9wID0gLTE7CiAgICBtLnRvcCA9IC0xOwoKICAgIHNwZWNpYWxQdXNoKDEwKTsKICAgIHNwZWNpYWxQdXNoKDUpOwogICAgc3BlY2lhbFB1c2goMjApOwogICAgc3BlY2lhbFB1c2goMzApOwogICAgcHJpbnRmKCJcbkFmdGVyIDEwLDUsMjAsMzBcbiIpOwogICAgZGlzcGxheSgmbSk7CiAgICBwcmludGYoIk1pbi0+JWRcbiIsZ2V0TWluKCkpOwogICAgCiAgICBwcmludGYoIkFmdGVyIDEwLDUsMjAsMzAsMSBcbiIpOwogICAgc3BlY2lhbFB1c2goMSk7CiAgICBkaXNwbGF5KCZtKTsKICAgIHByaW50ZigiTWluLT4lZFxuIixnZXRNaW4oKSk7CiAgICByZXR1cm4gMDsKCn0=