아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

다음 3-1-2 패턴 회피 순열

시간 제한0.1초메모리 제한32 MB

요약
3-1-2 패턴을 피하는 1부터 n까지의 순열이 주어질 때, 사전순으로 다음 순열을 출력한다.
난이도

어려움10점 중 8점

유형
조합론, 그리디, 구현
정답자
아직 제출이 없습니다

문제

순열의 패턴 회피는 조합론과 컴퓨터과학에서 오래 연구된 주제다. 자연수 1,…,n1, \dots, n의 순열 p1,p2,…,pnp_1, p_2, \dots, p_n이 3-1-2 패턴을 회피한다는 것은 pi>pjp_i > p_j, pi>pkp_i > p_k, pj<pkp_j < p_k를 동시에 만족하는 첨자 1≤i<j<k≤n1 \le i < j < k \le n이 없다는 뜻이다.

3-1-2 패턴을 회피하는 1,…,n1, \dots, n의 순열을 모두 사전순으로 나열하자. 이 목록에서 주어진 순열 바로 다음에 오는 순열을 구하라. 감소 수열 n,n−1,…,1n, n-1, \dots, 1이 목록의 마지막 항목이고 입력은 이 순열이 아니므로 답은 항상 존재한다.

입력

첫째 줄에 정수 nn (3≤n≤100003 \le n \le 10000)이 주어진다. 둘째 줄에 1,…,n1, \dots, n의 순열이 공백 하나로 구분된 nn개의 정수로 주어진다. 이 순열은 3-1-2 패턴을 회피하며, 감소 수열 n,n−1,…,1n, n-1, \dots, 1은 아니다.

출력

첫째 줄에 3-1-2 패턴을 회피하는 순열 중 입력 순열의 사전순 바로 다음 순열을 출력한다. 수는 공백 하나로 구분한다.

예제3

  1. 예제 1

    입력
    5
    2 4 5 3 1
    
    예상 출력
    2 5 4 3 1
    
  2. 예제 2

    입력
    3
    1 2 3
    
    예상 출력
    1 3 2
    
  3. 예제 3

    입력
    7
    4 7 6 5 3 2 1
    
    예상 출력
    5 4 3 2 1 6 7