페이지를 불러오는 중…
해결한 사람
1
명
정답률
50.00
%
시간 제한
4000
ms
메모리 제한
2048
MB
식물학자 헤이즐은 싱가포르 식물원의 특별한 전시회를 방문했다. 전시회에서 서로 다른 키의 개 식물들이 원 위에 놓여 있다. 이 식물들은 시계 방향으로 부터 로 나타내고, 식물 다음에 식물 이 놓여 있다.
각 식물 ()에 대해서, 헤이즐은 식물 와 시계 방향으로 다음 개의 식물 각각을 비교했고, 이 개 식물 중 식물 보다 더 큰 식물의 개수를 나타내는 숫자 를 적었다. 그래서 각 는 어떤 연속적인 개의 식물들의 상대적인 키에 따라 결정된다.
예를 들어, , , 이라고 하자. 식물 으로부터 시계 방향으로 다음 개의 식물들은 식물 와 이다. 만약 식물 가 식물 보다 크고 식물 이 식물 보다 작다면, 헤이즐은 로 적는다.
헤이즐이 들을 정확히 기록했다고 가정한다. 따라서 이 숫자들과 일치하는 서로 다른 키의 식물들의 배치 형태는 적어도 하나 존재한다.
여러분은 개 식물 쌍들의 키를 비교해 달라는 요청을 받았다. 불행히도, 여러분은 전시회에 접근하지 못한다. 여러분의 유일한 정보는 헤이즐의 노트북에 기록된 와 수열 이다.
비교해야 하는 각각의 서로 다른 두 식물 와 의 쌍에 대해서, 여러분은 다음 세 가지 상황 중 어떤 일이 일어났는지 결정해야 한다.
여러분은 다음 프로시저를 구현해야 한다.
void init(int k, int[] r)
compare_plants가 호출되기 전에 정확히 한 번 호출된다.int compare_plants(int x, int y)
다음 호출을 생각해 보자.
init(3, [0, 1, 1, 2])
그레이더가 compare_plants(0, 2)를 호출한다고 하자. 이기 때문에 우리는 식물 가 식물 보다 크지 않다고 추측할 수 있다. 따라서 이 호출은 을 리턴해야 한다.
다음으로 그레이더가 compare_plants(1, 2)를 호출한다고 하자. 위 조건들을 만족하는 모든 가능한 키들의 배치에서, 식물 은 식물 보다 작다. 따라서 이 호출은 을 리턴해야 한다.
다음 호출을 생각해 보자.
init(2, [0, 1, 0, 1])
그레이더가 compare_plants(0, 3)을 호출한다고 하자. 이기 때문에 우리는 식물 이 식물 보다 크다는 것을 안다. 따라서 이 호출은 을 리턴해야 한다.
다음으로 그레이더가 compare_plants(1, 3)을 호출한다고 하자. 키의 두 배치 와 은 모두 헤이즐의 측정과 일치한다. 식물 은 식물 보다 한 배치에서는 작고, 다른 배치에서는 더 크기 때문에 이 호출은 을 리턴해야 한다.
compare_plants의 각 호출의 정확한 답은 혹은 이다.compare_plants의 각 호출에 대해서 이다.compare_plants의 번째 호출에 대한 compare_plants의 번째 호출의 리턴 값4 3 2
0 1 1 2
0 2
1 2
1
-1
4 2 2
0 1 0 1
0 3
1 3
1
0
International Olympiad in Informatics (IOI) 2020, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.