只能通过第一个案例,不知道为什么。
#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 ****************************************************************/