페이지를 불러오는 중…
해결한 사람
2
명
정답률
100.00
%
시간 제한
3000
ms
메모리 제한
256
MB
Mike는 Peter와 게임을 하고 있다. 바닥에는 개의 정사각형이 한 줄로 그려져 있으며, 왼쪽부터 오른쪽까지 에서 까지 번호가 매겨져 있다. 게임을 시작할 때 Peter는 각 정사각형을 검은색 또는 흰색으로 칠할 수 있다. 그런 다음 Peter는 Mike에게 하나의 양의 정수 ()를 알려준다.
이 게임은 총 개의 라운드로 진행된다. 각 라운드에서 Mike는 정사각형 ()를 무작위로 선택하고, 위치 부터 까지의 정사각형들의 색을 Peter에게 알려준다. 이 위치들 중 범위를 벗어나는 것이 있다면 Mike는 그 사실도 Peter에게 알려준다. 그러면 Peter는 오직 이 정보만을 바탕으로 를 정확하게 알아내야 한다.
Peter는 Mike에게 깊은 인상을 주고 싶기 때문에 가능한 한 작은 의 값을 선택하고자 한다. Peter가 가능한 최소의 값으로 이 게임에서 이길 수 있는 전략을 세우도록 도와주자.
다음 프로시저를 구현해야 한다.
int[] paint(int n)
find_location이 호출되기 전에 정확히 한 번 호출된다.int find_location(int n, int c[])
각 테스트 케이스는 여러 개의 독립적인 시나리오, 즉 서로 다른 의 값을 포함할 수 있다. 개의 시나리오를 포함하는 테스트 케이스에서는 위 프로시저들을 호출하는 프로그램이 다음과 같이 정확히 두 번 실행된다.
프로그램의 첫 번째 실행에서는 다음과 같다.
paint 프로시저가 번 호출되고,find_location은 호출되지 않는다.프로그램의 두 번째 실행에서는 다음과 같다.
find_location이 여러 번 호출될 수 있고,find_location 호출에 주어지는 의 값과 색들은 첫 번째 실행에서 임의로 선택된 시나리오에 대해 호출된 paint가 생성한 것들이며,paint는 호출되지 않는다.다음 호출을 생각해 보자.
paint(5)
정사각형은 총 개이다. Peter는 정사각형들을 순서대로 검은색, 검은색, 흰색, 검은색, 흰색으로 칠할 수 있으며, 의 값을 알아내는 데 이면 충분하다고 결정할 수 있다. 이 경우 프로시저는 [, , , , , ]을 반환해야 한다.
그런 다음 find_location이 여러 번 호출된다.
가능한 호출 하나를 생각해 보자.
find_location(5, [0, 1, 0])
이는 번째, 번째, 번째 정사각형의 색이 각각 검은색, 흰색, 검은색이라는 뜻이다. Peter는 이 정보로부터 임을 알아낼 수 있다. 따라서 프로시저는 을 반환해야 한다.
가능한 다른 호출을 생각해 보자.
find_location(5, [1, 0, 1])
이는 번째, 번째, 번째 정사각형의 색이 각각 흰색, 검은색, 흰색이라는 뜻이다. Peter는 이 정보로부터 임을 알아낼 수 있다. 따라서 프로시저는 를 반환해야 한다.
paint가 반환하는 의 값은 이하여야 한다.paint가 반환하는 의 값은 이하여야 한다.paint가 반환하는 의 값은 이하여야 한다.paint가 반환하는 의 값은 이하여야 한다.서브태스크 4에서는 부분 점수를 받을 수 있다. 모든 시나리오에서 paint가 반환한 의 값 중 최댓값을 이라고 하자. 이 서브태스크의 점수는 다음 표에 따라 계산된다.
| 의 최댓값 | 점수 |
|---|---|
샘플 그레이더는 다음 형식으로 입력을 읽는다.
이후 각각 하나의 시나리오를 설명하는 개의 블록이 주어진다. 각 블록의 형식은 다음과 같다.
find_location의 번째 호출에 대한 의 값.샘플 그레이더는 다음 형식으로 출력한다.
이후 입력에 연속해서 주어진 시나리오들에 대응하는 개의 블록이 출력된다. 각 블록의 형식은 다음과 같다.
find_location의 번째 호출이 반환한, 알아낸 의 값.샘플 그레이더를 실행할 때마다 paint와 find_location이 모두 호출된다는 점에 유의하라.
1
5 2
1
2
International Olympiad in Informatics (IOI) 2020, official task package; Korean translation by Reporch.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.