/* Simulate stack with struct array, and save the current min and max values in struct */ # Include <Iostream> # Include <Cstdio> # Include <Cstring> Using Namespace STD; Const Int X = 65537 ; Int N, top; Struct Node { Int Max, min;} stack [x]; Int Main () {freopen ( " Sum. In " , " R " , Stdin ); Char S [ 10 ]; Int X; Int Ncase = 0 ; While (CIN> N, N) {printf ( " Case % d \ n " , ++ Ncase); top = 0 ; For ( Int I =0 ; I <n; I ++ ) {Scanf ( " % S " , S ); If (S [ 0 ] = ' M ' ){ If (! Top) printf ( " Null \ n " ); Else { If (S [ 1 ] = ' A ' ) Printf ( " % D \ n " , Stack [Top- 1 ]. Max ); Else Printf ( " % D \ n " , Stack [Top- 1 ]. Min );}} Else { If (S [ 1 ] = ' O ' ){ If (Top) Top -- ;} Else {Scanf ( " % D " ,& X ); If (Top) {stack [Top]. Max = Max (x, stack [Top- 1 ]. Max); stack [Top]. Min = Min (x, stack [Top- 1 ]. Min );} Else Stack [Top]. Min = Stack [Top]. max = X; top ++ ;}}}} Return 0 ;}