Вы объявили стек stack<int> s;
внутри l oop, поэтому он будет очищаться в каждом начале l oop. Объявление должно быть снаружи l oop как
stack<int> s; // move here, for example
int n;
cin>>n;
while(n--)
{
// stack<int> s;
Это изменение сделает вывод для ввода здесь правильным, но я не думаю, что программа верна только это изменение. Я не думаю, что запрос типа 3 должен удалять элементы в стеке.