在每次放进去的时候直接和前一个进行比较,然后拿最小值作为放进去的即可。比如放进去的是5 4 6 3,那么从杯底到杯口的数值应该是5 4 4 3,以后每一次删除就只要删除一个即可。
#include <iostream>
using namespace std;
int a[3000000];
int flag_ = -1;
int main (){
int n, value;
cin >> n;
char ch;
while (n--){
cin >> ch;
if ('+' == ch){
cin >> value;
flag_++;
if (0 == flag_){
a[flag_] = value;
}else{
a[flag_] = min(a[flag_-1], value);
}
cout << a[flag_] << endl;
}else{
if (flag_ >= 0){
flag_--;
}
if (flag_ >= 0){
cout << a[flag_] << endl;
}else{
cout << "-1" << endl;
}
}
}
return 0;
}