만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

반려동물 준세

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

요약
각 원소를 뒤에 있으면서 자신보다 큰 원소의 개수로 바꾸는 과정을 반복합니다. 배열이 더 이상 변하지 않을 때까지의 횟수를 구하고, 끝나지 않으면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

준세는 문제를 만드는 중이다. 이미 반려당한 문제가 계속 마음에 걸려, 준세는 그 문제를 다시 들여다보고 있다. 문제는 다음과 같다.

정수 배열 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. 각 BiB_i는 Ai+1,Ai+2,…,ANA_{i+1}, A_{i+2}, \ldots, A_N 중 AiA_i보다 큰 원소의 개수로 정의된다. B1,B2,…,BNB_1, B_2, \ldots, B_N을 구하여 출력한다.

준세는 위 문제를 올바르게 푸는 프로그램을 작성했다. 그리고 입력과 출력이 모두 같은 개수의 정수로 이루어진 배열이라는 사실을 알게 되었다.

그래서 준세는 주어진 배열 a1,a2,…,ana_1, a_2, \ldots, a_n을 이용해 프로그램을 여러 번 실행하며 논다. 준세는 다음 과정을 반복한다. 프로그램에 입력으로 a1,a2,…,ana_1, a_2, \ldots, a_n을 넣고 실행해 출력으로 b1,b2,…,bnb_1, b_2, \ldots, b_n을 얻는다. 모든 ii에 대해 ai=bia_i = b_i이면 과정을 멈추고 자러 간다. 그렇지 않다면 모든 ii에 대해 aia_i의 값을 bib_i로 고치고 다시 반복한다.

준세는 언제 잠들 수 있을까?

입력

첫 번째 줄에는 배열의 길이 nn이 주어진다.

두 번째 줄에는 배열을 나타내는 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 공백으로 구분되어 주어진다.

출력

준세가 프로그램을 실행한 횟수를 출력한다.

준세가 과정을 무한히 반복하더라도 잠들 수 없다면 −1-1을 출력한다.

제한

1≤n≤2001 \le n \le 200, −109≤ai≤109-10^9 \le a_i \le 10^9.

힌트

실제로 준세는 이 문제를 10번 정도 반려당했습니다.

예제1

  1. 예제 1

    입력
    3
    2 -1 3
    
    예상 출력
    3