백준 24511 c++
#include <iostream>
//#include <queue>
//#include <stack>
#include <vector>
#include <deque>
using namespace std;
int input(int lower, int upper);
void input_kind(vector <int>& kind, int size);
void input_int_string(vector <int>& int_str, int size);
void check_result(vector <int> kind, vector <int> original, vector <int> insert);
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
vector <int> kind;
vector <int> original;
vector <int> insert;
N = input(1, 100000);
input_kind(kind, N);
input_int_string(original, N);
M = input(1, 100000);
input_int_string(insert, M);
check_result(kind, original, insert);
return 0;
}
int input(int lower, int upper)
{
//cout << "input" << endl;
int A;
while (1)
{
cin >> A;
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void input_kind(vector <int> &kind, int size)
{
//cout << "input_kind()" << endl;
int i;
for (i = 0; i < size; i++)
{
kind.push_back(input(0, 1));
}
return;
}
void input_int_string(vector <int>& int_str, int size)
{
//cout << "input_int_string()" << endl;
int i;
for (i = 0; i < size; i++)
{
int_str.push_back(input(1, 1000000000));
}
return;
}
void check_result(vector <int> kind, vector <int> original, vector <int> insert)
{
//cout << "check_result()" << endl;
int i;
unsigned int kind_size = kind.size();
unsigned int insert_size = insert.size();
deque <int> edit;
vector <int> result;
//스택인 경우는 변화없음...
//큐일 때만 결과값 변함...
//큐인 것만 따로 빼서 새로운 deque를 만들기
for (i = 0; i < kind_size; i++)
{
if (kind[i] == 0)//큐인경우
{
edit.push_back(original[i]);
}
else//스택인 경우
{
;
}
}//큐인 것만 따로 빼서 새로운 deque를 만듦
for (i = 0; i < insert_size; i++)
{
edit.push_front(insert[i]);
result.push_back(edit.back());
edit.pop_back();
}
//결과 출력
for (i = 0; i < result.size(); i++)
{
cout << result[i] << " ";
}
cout << "\n";
return;
}