백준 2346 c++
#include <iostream>
#include <deque>
using namespace std;
int input(int lower, int upper);
void input_balloon_paper(deque <pair<int, int>>& balloon, int num);
void print_order(deque <pair<int, int>>& balloon);
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
deque <pair<int, int>> balloon;
N = input(1, 1000);
input_balloon_paper(balloon, N);
print_order(balloon);
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_balloon_paper(deque <pair<int, int>>& balloon, int num)
{
//cout << "input_balloon_paper" << endl;
int i;
int temp;
for (i = 0; i < num; i++)
{
temp = input(-1 * num, num);
if (temp == 0)
{
i--;
}
else
{
balloon.push_back(make_pair(temp, i+1));
}
}
return;
}
void print_order(deque <pair<int, int>>& balloon)
{
//cout << "print_order" << endl;
int size = balloon.size();
int order, temp, i;
while (size > 0)
{
order = balloon.front().second;
cout << order << " ";
temp = balloon.front().first;
balloon.pop_front();
if (balloon.empty())
{
break;
}
if (temp > 0) //종이의 수가 양수일때
{
for (i = 0; i < temp - 1; i++)
{
balloon.push_back(balloon.front());
balloon.pop_front();
}
}
else //종이의 수가 음수일때
{
for (i = 0; i < -1*temp; i++)
{
balloon.push_front(balloon.back());
balloon.pop_back();
}
}
size--;
}
cout << "\n";
return;
}