먼저 문제에 대해 잘 이해할 필요가 있습니다.
일단 stack인 부분은 단순히 값이 들어오고 나가기 때문에 무시해도 되고, 핵심은 queue 부분입니다.
queue에서 새 값을 enqueue하고 dequeue해 다음 queue에 enqueue합니다.
첫번째 예시를 시각화해서 보면 아래와 같습니다.

이를 더 단순화할 수 있습니다.

두 queue를 이렇게 붙여서 보면 맨 앞부분에 삽입을 하고, 맨 뒷부분이 빠지는걸 확인할 수 있습니다.
deque 자료구조는 양방향 삽입, 삭제가 가능하므로 deque를 이용하면 쉽게 해결할 수 있습니다.
저는 이전에 풀었던 문제인 덱 2 에서 만든 Deque 클래스를 가져와 해결했습니다. 해당 클래스는 저 링크를 통해 들어가면 확인할 수 있습니다.
#include <iostream>
int main()
{
std::cin.tie(NULL);
std::ios_base::sync_with_stdio(false);
int n;
std::cin >> n;
int* type = new int[n + 1];
Deque deque(n + 1);
for (int i = 0; i < n; i++)
std::cin >> type[i];
for (int i = 0; i < n; i++)
{
int temp;
std::cin >> temp;
if (type[i] == 0)
{
deque.Add_Rear(temp);
}
}
int c;
std::cin >> c;
for (int i = 0; i < c; i++)
{
int temp;
std::cin >> temp;
deque.Add_Front(temp);
std::cout << deque.Delete_Rear() << " ";
}
return 0;
}