블록 정렬
면접 대비시간 제한1초메모리 제한128 MB
1부터 n까지의 순열이 주어질 때, 마지막 원소를 맨 앞으로 옮기거나 세 번째 원소를 맨 앞으로 옮기는 두 동작만으로 오름차순으로 정렬할 수 있는지 판정한다.
문제
바이트아사르가 아들 바이티에게 번부터 번까지 번호가 붙은 블록을 사 주고, 한 줄로 어떤 순서로 늘어놓았다. 바이티는 블록의 번호가 가장 작은 것부터 가장 큰 것까지 오름차순이 되도록 다시 배열하려고 한다.
바이티가 사용할 수 있는 이동은 다음 두 가지뿐이다.
- 이동 a: 맨 마지막 블록을 맨 앞으로 옮긴다.
- 이동 b: 세 번째 블록(현재 번 위치에 있는 블록)을 맨 앞으로 옮긴다.
이동 b는 블록이 개 이상일 때만 사용할 수 있다. 처음 배열이 주어질 때, 이 두 이동을 원하는 만큼 사용하여 블록을 오름차순으로 정렬할 수 있는지 판정하여라.
입력
첫째 줄에 정수 ()이 주어진다.
둘째 줄에는 부터 까지의 서로 다른 정수 개가 공백 하나로 구분되어 주어지며, 이는 블록의 초기 배열을 왼쪽부터 순서대로 나타낸다.
출력
허용된 이동을 사용하여 블록을 오름차순으로 정렬할 수 있으면 YES를, 그렇지 않으면 NO를 출력한다.