Ejemplo n.º 1
0
int StackWithMin::pop()
{
	int n = s1.pop();

	// 最小値だった場合は一つ取り出して、以前の最小値を最新にする.
	if(n == s2.last() && s2.size() > 1){
		s2.pop();
	}

	return n;
}
Ejemplo n.º 2
0
void StackWithMin::push(int n)
{
	s1.push(n);

	if(s2.size() == 0){
		s2.push(n);
	}else{

		// 現在の追加値が最小値よりも小さい.
		if(n < s2.last()){
			s2.push(n);
		}
	}
}