| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 128 | 56 | 32 | 37.647% |
민재와 재하는 수 맞히기 게임의 참가자이고, 유담이는 이 게임의 진행자이다.
유담이는 게임 시작 전 두 양의 정수 $N,ドル $M$을 정한다. 이때 두 수의 차 $|N-M|$을 $K$라 하자.
수 맞히기 게임의 진행 방식은 다음과 같다.
게임 시작 전 민재와 재하는 전략을 논의할 수 있다. 그러나 게임이 시작된 후에 두 사람은 민재가 정수 $C$를 종이에 적어 재하에게 전달하는 것 이외에는 어떤 방법으로도 소통할 수 없다.
재하가 추측한 값이 실제 $N$과 같다면 민재와 재하는 게임에서 승리한다.
두 사람을 위해 게임에서 승리할 수 있는 전략을 만들어 주자.
함수 구현에 앞서 #include "game.h" 를 통해 "game.h" 헤더파일을 포함해야 한다.
여러분은 다음 두 함수를 구현해야 한다.
int mj1000j(int N, int K)
민재의 전략을 나타내는 함수이다.
이 함수는 민재가 전달할 정수 $C$를 반환해야 하며 $C \in \{0, 1\}$을 만족해야 한다. 범위를 만족하지 않는 수를 반환하는 경우 틀렸습니다를 받는다.
int anchor(int M, int K, int C)
재하의 전략을 나타내는 함수이다.
이 함수는 재하가 추측한 $N$의 값인 정수 $N'$를 반환해야 한다. 만약 $N \neq N'$인 경우 틀렸습니다를 받는다.
모든 게임에서 $N=N'$을 만족하는 경우 맞았습니다!!를 받는다.
한 번의 게임은 두 함수를 차례대로 1ドル$회씩 호출하며, 각 테스트케이스에서는 최대 40ドル \ 000$번의 게임이 진행될 수 있다.
제출하는 소스 코드의 어느 부분에서도 입출력 함수를 실행해서는 안 된다.
$N=5,ドル $M=3$인 경우를 생각하자.
$K=|N-M|=2$이므로, 그레이더는 다음 함수를 호출한다.
mj1000j(5, 2)
민재가 재하에게 $C=1$을 전달하는 경우를 생각하자.
그레이더는 다음 함수를 호출한다.
anchor(3, 2, 1)
이 함수는 $N'=5$를 구하여 반환해야 한다.
샘플 그레이더는 다음의 형식으로 입력을 받는다:
$T$는 테스트케이스의 개수, $N[i],ドル $M[i]$는 각각 $i$번째 테스트케이스에서의 $N$과 $M$의 값을 의미한다.
샘플 그레이더는 다음 형식으로 답을 출력한다:
mj1000j 함수의 반환값이 0ドル$ 또는 1ドル$이 아닌 경우:
Invalid return value== $N'$!= $N'$C++17, C++20, C++23, C++26