반려동물 준세

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

요약
주어진 배열을 오른쪽에 있는 더 큰 원소의 개수 배열로 반복해 바꿀 때, 더 이상 변하지 않을 때까지의 실행 횟수를 구하거나 무한 반복이면 -1을 출력한다.
난이도

보통10점 중 5점

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

문제

오늘도 준세는 문제를 만드는 중이다. 이미 반려당한 문제를 보며 준세는 미련을 버리지 못하고 있다. 준세의 문제는 다음과 같다.

  • 정수로 이루어진 배열 A_1,A_2,…,A_NA\_1,A\_2,\ldots ,A\_N이 주어진다.
  • 각 B_iB\_i는 A_i+1,A_i+2,…,A_NA\_{i+1},A\_{i+2},\ldots ,A\_N 중 A_iA\_i보다 큰 원소의 개수로 정의된다.
  • B_1,B_2,…,B_NB\_1,B\_2,\ldots ,B\_N을 구하여 출력한다.

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

따라서 준세는 주어지는 배열 a_1,a_2,…,a_na\_1,a\_2,\ldots ,a\_n을 이용해 프로그램을 여러 번 실행시키며 놀 것이다.

구체적으로, 준세는 다음 과정을 반복한다.

  • 프로그램에 입력으로 a_1,a_2,…,a_na\_1,a\_2,\ldots ,a\_n을 넣고 실행하여 출력으로 b_1,b_2,…,b_nb\_1,b\_2,\ldots ,b\_n을 얻는다.
  • 모든 ii에 대해 a_i=b_ia\_i=b\_i라면 과정의 반복을 중단하고 자러 간다.
  • 그렇지 않다면, 모든 ii에 대해 a_ia\_i의 값을 b_ib\_i로 수정한다.

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

입력

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

두 번째 줄에는 주어지는 배열을 나타내는 nn개의 정수 a_1,a_2,…,a_na\_1,a\_2,\ldots ,a\_n이 공백으로 구분되어 주어진다.

출력

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

준세가 과정을 무한히 많이 반복하더라도 자러 갈 수 없다면, -1을 출력한다.

제한

  • 1≤n≤2001≤n≤200.
  • −109≤a_i≤109-10^{9}\le a\_i\le 10^{9}.

힌트

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

예제1

  1. 예제 1

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