只能通过第一个案例,不知道为什么。
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<stack>
using namespace std;
class mystack{
public:
stack<int> data;
stack<int> datamin;
void mypush(int tmp){
if(data.empty()){
data.push(tmp);
datamin.push(tmp);
return;
}
if(data.top() >= tmp){
datamin.push(tmp);
}else{
datamin.push(datamin.top());
}
data.push(tmp);
}
void mypop(){
if(data.empty()){
return;
}
data.pop();
datamin.pop();
}
void mymin(){
if(!data.empty()){
printf("%d\n", datamin.top());
}else{
printf("NULL\n");
}
}
};
int main()
{
int n;
char flag;
int datainput;
int i;
mystack stackdata;
while(scanf("%d",&n) != EOF && n>=1 && n<=1000000){
if(n <= 0){
continue;
}
for(i=0; i<n; ++i){
scanf("\n%c", &flag);
if(flag == 's'){
scanf("%d", &datainput);
stackdata.mypush(datainput);
stackdata.mymin();
}else if(flag == 'o'){
stackdata.mypop();
stackdata.mymin();
}
}
if(!stackdata.data.empty()){
while(!stackdata.data.empty()){
stackdata.data.pop();
stackdata.datamin.pop();
}
}
}
return 0;
}
/**************************************************************
Problem: 1522
User: 星之河
Language: C++
Result: Wrong Answer
****************************************************************/