// min.cpp :
//
#include "stdafx.h"
#include <stack>
using namespace std;
class simplestack
{
public:
stack<int> s;
stack<int> mins;
public:
void push(int v);
void pop();
int min();
};
void simplestack::push(int v)
{
if(s.empty())
{
s.push(v);
mins.push(v);
}
else
{
if (v < mins.top())
{
mins.push(v);
}
s.push(v);
}
}
void simplestack::pop()
{
if (!s.empty())
{
if (s.top() == mins.top())
{
s.pop();
mins.pop();
}
else
{
s.pop();
}
}
}
int simplestack::min()
{
if (!mins.empty())
{
return mins.top();
}
else
{
return 65535;
}
}
void fun()
{
simplestack simples;
simples.push(5);
simples.push(4);
simples.push(1);
simples.push(2);
simples.push(3);
simples.push(0);
printf("min=%d \n", simples.min());
simples.pop();
printf("min=%d \n", simples.min());
simples.pop();
printf("min=%d \n", simples.min());
simples.pop();
printf("min=%d \n", simples.min());
simples.pop();
printf("min=%d \n", simples.min());
simples.pop();
printf("min=%d \n", simples.min());
simples.pop();
}
int _tmain(int argc, _TCHAR* argv[])
{
fun();
return 0;
}