


1 ‘X’: Enqueue element ‘X’ into the end of the nth queue. Returns true after the element is enqueued.
2: Dequeue the element at the front of the nth queue. Returns -1 if the queue is empty, otherwise, returns the dequeued element.
Enqueue means adding an element to the end of the queue, while Dequeue means removing the element from the front of the queue.
The first line of input contains an integer ‘Q’ denoting the number of queries.
The next ‘Q’ lines specify the type of operation/query to be performed on the data structure.
Each query contains an integer ‘P’ denoting the type of query.
For query of type 1, the integer ‘P’ is equal to 1 and it is followed by one integer ‘X’ denoting the element on which operation is to be performed.
For query of type 2, the integer ‘P’ is equal to 2 which dequeues the element.
For each query, return the output returned after performing the corresponding operation on the data structure.
You don’t need to print anything. It has already been taken care of. Just implement the given functions.
1 <= Q <= 10^5
1 <= P <= 2
1 <= X <= 10^5
Time limit: 1 sec
In this approach, we make sure that the oldest element added to the queue stays at the top of the stack, the second oldest below it and so on. To achieve this, we will need two stacks.
First stack('STK1') is the main stack being used to store the data, while the second stack('STK2') is to assist and store data temporarily during various operations.
Following steps will be involved while enqueuing a new element to the queue:
This makes removing an element from the queue very simple, all we have to do is call the pop() method for stack 'STK1'.
In this approach, we insert a new element onto the stack 'STK1' simply by calling the push() function, but doing so will push our first element towards the bottom of the stack, as we insert more elements to the stack.
But we want the first element to be removed first. Hence in the dequeue operation, we will have to use the second stack 'STK2'.
The steps are as follows: