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

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

트리플 소트

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

요약
1부터 N까지의 순열이 주어질 때, 연속한 세 원소를 뒤집는 연산을 반복해 오름차순으로 정렬할 수 있는지 판정한다.
난이도

보통10점 중 6점

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

문제

알고리즘 수업을 듣고 감명을 받은 윤이는 자신만의 정렬 알고리즘을 만들기로 했다. 윤이가 만든 정렬 알고리즘 "트리플 소트"는 다음과 같이 동작한다.

  • 배열에서 연속한 위치에 있는 세 원소를 임의로 고른다.
  • 세 원소의 순서를 뒤집는다. 예를 들어 세 원소가 순서대로 a,b,ca, b, c이면 뒤집은 뒤에는 c,b,ac, b, a가 된다.
  • 배열이 오름차순으로 정렬될 때까지 위 과정을 반복한다.

그러나 윤이는 트리플 소트로 모든 배열을 정렬할 수 없다는 사실을 깨닫고 실망했다. 11부터 NN까지의 정수가 한 번씩 등장하는 배열이 주어졌을 때, 트리플 소트로 정렬할 수 있는지 판별하는 프로그램을 작성하시오.

입력

첫 번째 줄에 배열의 크기를 나타내는 정수 NN이 주어진다.

두 번째 줄에 배열의 원소가 공백을 사이에 두고 순서대로 주어진다.

출력

트리플 소트로 주어진 배열을 오름차순으로 정렬할 수 있으면 YES, 그렇지 않으면 NO를 출력한다.

제한

3≤N≤300,0003\leq N \leq 300,000

11 이상 NN 이하의 정수가 주어진 배열에 한 번씩 등장한다.

예제2

  1. 예제 1

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

    입력
    5
    3 1 5 2 4
    
    예상 출력
    NO