class Ideone {
public static void main
(String[] args
) { MinStack stack = new MinStack();
for (int i = 0; i < 5; ++i) {
stack.push(i);
}
for (int i = 0; i < 5; ++i) {
System.
out.
println(stack.
getMin()); stack.pop();
}
}
}
class MinStack {
private Node head;
public void push(int x) {
if (head == null)
head = new Node(x, x, null);
else
head
= new Node
(x,
Math.
min(x, head.
min), head
); }
public void pop() {
head = head.next;
}
public int top() {
return head.val;
}
public int getMin() {
return head.min;
}
private class Node {
int val;
int min;
Node next;
private Node(int val, int min, Node next) {
this.val = val;
this.min = min;
this.next = next;
}
}
}
CmNsYXNzIElkZW9uZSB7CiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgTWluU3RhY2sgc3RhY2sgPSBuZXcgTWluU3RhY2soKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CiAgICAgIHN0YWNrLnB1c2goaSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3RhY2suZ2V0TWluKCkpOwogICAgICBzdGFjay5wb3AoKTsKICAgIH0KCiAgfQp9CgpjbGFzcyBNaW5TdGFjayB7CiAgcHJpdmF0ZSBOb2RlIGhlYWQ7CgogIHB1YmxpYyB2b2lkIHB1c2goaW50IHgpIHsKICAgIGlmIChoZWFkID09IG51bGwpCiAgICAgIGhlYWQgPSBuZXcgTm9kZSh4LCB4LCBudWxsKTsKICAgIGVsc2UKICAgICAgaGVhZCA9IG5ldyBOb2RlKHgsIE1hdGgubWluKHgsIGhlYWQubWluKSwgaGVhZCk7CiAgfQoKICBwdWJsaWMgdm9pZCBwb3AoKSB7CiAgICBoZWFkID0gaGVhZC5uZXh0OwogIH0KCiAgcHVibGljIGludCB0b3AoKSB7CiAgICByZXR1cm4gaGVhZC52YWw7CiAgfQoKICBwdWJsaWMgaW50IGdldE1pbigpIHsKICAgIHJldHVybiBoZWFkLm1pbjsKICB9CgogIHByaXZhdGUgY2xhc3MgTm9kZSB7CiAgICBpbnQgdmFsOwogICAgaW50IG1pbjsKICAgIE5vZGUgbmV4dDsKCiAgICBwcml2YXRlIE5vZGUoaW50IHZhbCwgaW50IG1pbiwgTm9kZSBuZXh0KSB7CiAgICAgIHRoaXMudmFsID0gdmFsOwogICAgICB0aGlzLm1pbiA9IG1pbjsKICAgICAgdGhpcy5uZXh0ID0gbmV4dDsKICAgIH0KICB9Cn0=