[http://acm.uva.es/p/v1/120.html 원문보기] ---- 인기도:B(A,B,C), 성공률:높음(낮음,보통,높음), 레벨:2(1~4) === About [StacksOfFlapjacks] === 그릴에서 팬 케이크를 구워서 완벽한 팬 케이크 스택을 만드는 것은 정말 까다로운 일이다. 아무리 팬 케이크를 정성스럽게 만들어도 팬 케이크의 크기가 조금씩 다르기 때문이다. 하지만 팬 케이크를 잘 정렬해서 위에 있는 팬 케이크가 아래에 있는 팬 케이크보다 더 작게 쌓으면 깔끔하게 보이게 할 수 있다. 팬 케이크의 크기는 그 지름으로 주어진다. 스택을 정렬하는 과정은 일련의 팬 케이크 뒤집기 작업을 통해 이루어진다. 한 번 뒤집는 작업은 스택에 쌓여있는 것 중 두 팬 케이크 사이에 주걱을 집어넣고 그 주걱 위에 있는 모든 팬 케이크를 뒤집는 작업(주걱 위에 있는 팬 케이크로 구성된 하위 스택의 순서가 거꾸로 되도록 만드는 작업)으로 구성된다. 한 번의 뒤집기 작업은 전체 스택을 기준으로 뒤집어질 하위 스택의 맨 아래에 있는 팬 케이크의 위치를 지정하는 방식으로 표시된다. n개의 팬 케이크로 구성된 스택이 있을 때 맨 밑에 있는 팬 케이크의 위치는 1, 맨 위에 있는 팬 케이크의 위치는 n으로 표시된다. 스택은 팬 케이크가 등장하는 순서대로 스택에 들어있는 각 팬 케이크의 지름을 알려주는 식으로 열거된다. 예를 들어 다음은 세 개의 팬 케이크 스택을 열거해놓은 것인데, 왼쪽 스택 맨 위에 있는 팬 케이크는 지름이 8임을 알 수 있다. 8 7 2 4 6 5 6 4 8 7 8 4 5 5 6 2 2 7 filp(3)을 통해 왼쪽 스택이 가운데 스택으로 바뀔 수 있다. 그리고 flip(1)이라는 명령을 쓰면 가운데 스택이 오른쪽 스택으로 바뀐다. === Input === 입력은 여러 개의 팬 케이크 스택으로 구성된다. 각 스택은 한 개에서 서른 개 사이의 팬 케이크로 구성되며 각 팬 케이크의 지름은 1 이상 100이하의 정수로 주어진다. 입력은 파일 끝 문자에 의해 종료된다. 각 스택은 한 줄에 입력되며 맨 위에 있는 팬 케이크가 맨 앞에, 맨 밑에 있는 팬 케이크가 맨 뒤에 입력되고 모든 팬 케이크는 스페이스에 의해 구분된다. === Output === 각 팬 케이크 스택에 대해 원래 스택을 한 줄로 출력해야 하며 다음 줄에는 가장 큰 팬 케이크가 맨 밑으로, 가장 작은 팬 케이크가 맨 위로 올라가도록(팬 케이크가 클수록 밑으로 가도록) 스택을 정렬하기 위해 필요한 뒤집기 순서를 출력해야 한다. 뒤집기 수선를 출력한 후 맨 뒤에는 더 이상 뒤집지 않아도 된다는 것을 나타내는 0을 출력해야 한다. 스택 정렬이 끝나면 더 이상 뒤집지 않는다. === Sample Input === {{{~cpp 1 2 3 4 5 5 4 3 2 1 5 1 2 3 4 }}} === Sample Output === {{{~cpp 1 2 3 4 5 0 5 4 3 2 1 1 0 5 1 2 3 4 1 2 0 }}} === 풀이 === || 작성자 || 사용언어 || 개발시간 || 코드 || || [이동현] || C++ || 2시간 || [StacksOfFlapjacks/이동현] || || [문보창] || C++ || 30분 || [StacksOfFlapjacks/문보창] || || [조현태] || C || . || [StacksOfFlapjacks/조현태] || === 쓰레드 === ---- [문제분류] [AOI]