#include<iostream>
#include<vector>
using namespace std;
class stack
{
private:
vector<int> vec;//用来保存当前进栈的值
vector<int> max_vec;
public:
void push(int a)
{
vec.push_back(a);
if(max_vec.size()==0||a>vec[max_vec[max_vec.size()-1]])
{
max_vec.push_back(vec.size()-1);
}
}
int pop()
{
if(vec.size()==0)
return 0;
if(vec.size()-1==max_vec[max_vec.size()-1])
{
max_vec.pop_back();
}
int d=vec[vec.size()-1];
vec.pop_back();
return d;
}
bool empty()
{
return max_vec.size()==0;
}
int max_value()
{
if(!vec.empty())
{
int max_pos=max_vec[max_vec.size()-1];
return vec[max_pos];
}
return -1000;
}
};
class queue
{
private:
stack a,b;
public:
void enqueue(int a)
{
b.push(a);
}
void delete_queue()
{
if(a.empty())
{
while(!b.empty())
{
a.push(b.pop());
}
}
a.pop();
}
int max()
{
return a.max_value()>b.max_value()?a.max_value():b.max_value();
}
};
int main()
{
queue q1;
q1.enqueue(1);
q1.enqueue(3);
q1.enqueue(2);
q1.delete_queue();
q1.delete_queue();
cout<<q1.max()<<endl;
system("pause");
return 0;
}