인수분해 정렬

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

요약
인접한 두 수를 곱이 같고 합이 다른 양의 두 수로 바꾸는 연산만으로 수열을 비내림차순으로 만들 수 있는지 판별한다.
난이도

보통10점 중 7점

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

문제

쿠는 길이가 NN인 수열 AA를 가지고 있다. 쿠는 다음과 같은 연산을 통해 수열을 정렬하려고 한다.

  • 1≤i<N1 \le i \lt N인 ii를 선택하여, A_iA\_i와 A_i+1A\_{i+1}을 각각 a×b=A_i×A_i+1a\times b= A\_i \times A\_{i+1}과 a+b≠A_i+A_i+1a+b \neq A\_i+A\_{i+1}을 만족하는 두 양의 정수 aa, bb로 바꾼다.

연산을 원하는 만큼 시행하여, 수열을 비내림차순으로 만들 수 있는지 판별해 보자.

입력

첫째 줄에 수열의 길이를 나타내는 정수 NN이 주어진다. (2≤N≤200,000)\left(2 \le N \le 200\\, 000\right)

둘째 줄에 NN개의 정수 A_1,,A_2,,⋯ ,,A_NA\_1,\\, A\_2,\\, \cdots,\\, A\_N이 공백으로 구분되어 주어진다. (1≤A_i≤106)\left(1 \le A\_i \le 10^6 \right)

출력

수열 AA를 비내림차순으로 만들 수 있다면 YES를, 그렇지 않다면 NO를 출력한다.

힌트

길이가 NN인 수열 AA가 A_i≤A_i+1 (1≤i<N)A\_i \le A\_{i + 1}\ \left(1 \le i \lt N \right)을 만족하면 AA는 비내림차순입니다.

예제4

  1. 예제 1

    입력
    3
    12 8 2
    
    예상 출력
    YES
    
  2. 예제 2

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

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

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