https://acmicpc.net/problem/24511
이 문제는 시간 초과 때문에 꽤 많이 시도했다.
쓸데 없는 과정을 줄이는 알고리즘을 작성하는 것이 관건이었다.
큐에서의 원소는 항상 다음 자료구조로 넘어가고 스택에서의
원소는 다음 자료구조로 넘어가지 않는다.
따라서 큐에서의 원소들만 처리해주면 된다.
코드는 다음과 같다.
#include <bits/stdc++.h>
#define MAX 100000+1
using namespace std;
bool status[MAX];
deque<int> dq;
int N;
int M;
int C;
int num;
int main(){
ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> N;
for(int i=1;i<=N;i++){
cin >> status[i];
}
for(int i=1;i<=N;i++){
cin >> num;
if(!status[i]) dq.push_back(num);
}
cin >> M;
for(int i=0;i<M;i++){
cin >> num;
dq.push_front(num);
cout << dq.back() << ' ';
dq.pop_back();
}
}