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

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

블록 정렬

면접 대비

시간 제한1초메모리 제한128 MB

요약
1부터 n까지의 순열이 주어질 때, 마지막 원소를 맨 앞으로 옮기거나 세 번째 원소를 맨 앞으로 옮기는 두 동작만으로 오름차순으로 정렬할 수 있는지 판정한다.
난이도

보통10점 중 7점

유형
배열, 구현, 수학, 완전 탐색
정답자
아직 제출이 없습니다

문제

바이트아사르가 아들 바이티에게 11번부터 nn번까지 번호가 붙은 블록을 사 주고, 한 줄로 어떤 순서로 늘어놓았다. 바이티는 블록의 번호가 가장 작은 것부터 가장 큰 것까지 오름차순이 되도록 다시 배열하려고 한다.

바이티가 사용할 수 있는 이동은 다음 두 가지뿐이다.

  • 이동 a: 맨 마지막 블록을 맨 앞으로 옮긴다.
  • 이동 b: 세 번째 블록(현재 33번 위치에 있는 블록)을 맨 앞으로 옮긴다.

이동 b는 블록이 33개 이상일 때만 사용할 수 있다. 처음 배열이 주어질 때, 이 두 이동을 원하는 만큼 사용하여 블록을 오름차순으로 정렬할 수 있는지 판정하여라.

입력

첫째 줄에 정수 nn (1≤n≤20001 \le n \le 2000)이 주어진다.

둘째 줄에는 11부터 nn까지의 서로 다른 정수 nn개가 공백 하나로 구분되어 주어지며, 이는 블록의 초기 배열을 왼쪽부터 순서대로 나타낸다.

출력

허용된 이동을 사용하여 블록을 오름차순으로 정렬할 수 있으면 YES를, 그렇지 않으면 NO를 출력한다.

예제3

  1. 예제 1

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

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

    입력
    3
    3 1 2
    
    예상 출력
    YES