페이지를 불러오는 중…
해결한 사람
1
명
정답률
33.33
%
시간 제한
1000
ms
메모리 제한
2048
MB
새로운 컴퓨팅 기계인 Coreputer에는 부터 까지 번호가 매겨진 개의 코어가 있다. 최근 유지보수 과정에서 코어 중 일부가 오작동하고 있다는 사실이 밝혀졌다. 구체적으로 어느 코어가 오작동하는지는 알 수 없지만, 오작동하는 코어가 적어도 하나는 있다.
오작동하는 코어를 찾기 위해 Coreputer는 진단 스캔을 실행할 수 있다. 각 스캔에서 사용자는 어떤 에 대해 서로 다른 코어들로 이루어진 (비어 있을 수도 있는) 그룹 에 태그를 지정한다. 나머지 코어에는 태그가 지정되지 않는다. 그런 다음 Coreputer는 태그가 지정된 코어들과 태그가 지정되지 않은 코어들의 성능을 측정한다. 마지막으로, 두 그룹 중 어느 쪽에 오작동하는 코어가 더 많이 들어 있는지, 또는 두 그룹에 오작동하는 코어가 같은 수만큼 들어 있는지를 보고한다. 빈 그룹에는 오작동하는 코어가 개 있다는 점에 유의하라.
여러 번의 진단 스캔을 실행하여 오작동하는 코어를 찾는 것이 여러분의 과제이다.
다음 프로시저를 구현해야 한다.
int[] malfunctioning_cores(int N)
위 프로시저는 다음 프로시저를 호출할 수 있다.
int run_diagnostic(int[] T)
그레이더는 적응형이 아니다. 즉, 오작동하는 코어의 집합은 malfunctioning_cores가 호출되기 전에 고정된다.
개의 코어가 있고 코어 만 오작동하는 상황을 생각해 보자.
프로시저 malfunctioning_cores는 다음과 같이 호출된다.
malfunctioning_cores(4)
이 프로시저는 다음과 같이 run_diagnostic을 호출할 수 있다.
| 호출 | 태그가 지정된 코어 | 태그가 지정되지 않은 코어 | 반환값 |
|---|---|---|---|
run_diagnostic([0]) | |||
run_diagnostic([1, 2]) | |||
run_diagnostic([2]) |
첫 번째 호출에서는 태그가 지정된 오작동 코어는 없고 태그가 지정되지 않은 코어 중 하나가 오작동하므로, 프로시저는 을 반환한다.
세 번째 호출이 을 반환한 뒤에는 태그가 지정된 코어 중 적어도 하나(즉, 코어 )가 오작동한다는 것이 분명하다. 그런데 이 경우 태그가 지정되지 않은 오작동 코어의 수는 반드시 0이어야 하므로, 다른 어떤 코어도 오작동하지 않는다고 결론 내릴 수 있다.
따라서 프로시저 malfunctioning_cores는 을 반환해야 한다.
어떤 테스트 케이스에서든 프로시저 run_diagnostic의 호출이 구현 세부사항에 설명된 제약 조건을 따르지 않거나 malfunctioning_cores의 반환값이 올바르지 않으면, 해당 서브태스크에서 여러분의 풀이가 받는 점수는 점이다.
각 서브태스크에서 부분 점수를 받을 수 있다. 모든 테스트 케이스에서 프로시저 run_diagnostic을 호출한 횟수의 최댓값을 라고 하자. 그러면 다음 표에 따라 해당 서브태스크 점수의 일정 비율을 받는다.
| 조건 | 비율 |
|---|---|
샘플 그레이더는 다음 형식으로 입력을 읽는다.
여기서 이상 이하인 각 에 대해, 코어 가 오작동하면 이고, 그렇지 않으면 이다.
샘플 그레이더는 malfunctioning_cores를 호출하기 전에 오작동하는 코어가 적어도 하나 있는지 확인한다. 이 조건이 충족되지 않으면 No Malfunctioning Cores라는 메시지를 출력하고 종료한다.
샘플 그레이더가 프로토콜 위반을 감지하면 샘플 그레이더의 출력은 Protocol Violation: <MSG>이다. 여기서 <MSG>는 다음 오류 메시지 중 하나이다.
invalid array: run_diagnostic 호출에서 배열 가
too many calls: run_diagnostic의 호출 횟수가 를 초과한다.그렇지 않으면, 어떤 음이 아닌 정수 에 대해 malfunctioning_cores가 반환한 배열의 원소를 이라고 하자.
샘플 그레이더의 출력은 다음 형식이다.
run_diagnostic의 호출 횟수4
0 0 1 0
0 0 1 0
3
International Olympiad in Informatics (IOI) 2023, official task package; Korean translation by Reporch.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.