Statement
마녀재판이 끝나고, 며칠이나 지났을까──
타치바나 셰리
오늘은 여러분과 함께 놀려고 왔어요! 저희는 스트레스로 마녀화가 진행되니까, 좀 더 활기차게 지내죠!
다 같이 놀 수 있는 방법은 있다고 생각해요! 예를 들면요…… 음, 인터랙티브 카드 게임 같은거요!
──침울한 분위기를 달래기 위해 마법소녀들은 감옥 저택의 오락실에서 【마법 블랙잭】 토너먼트를 열었다. 이 게임의 기본적인 규칙은 아래와 같다.
- 게임이 시작하기 전, 심판은 소녀들 중 한 명의 죄수번호 을 스케치북에 적는다. 이 정보는 참가자에게 공개되지 않는다.
- 두 명의 마법소녀가 게임에 참여하며, 각자 무수히 많은 트럼프 카드 덱을 가지고 시작한다. 각 카드의 점수는 이상 이하의 정수이다.
- 참가자는 번갈아 턴을 가지며 자신이 가진 카드를 한 장씩 낸다. 지금까지 두 참가자가 낸 카드 점수의 총합을 라고 하자. 이 되는 순간, 마지막으로 카드를 낸 참가자가 패배한다.
결승에 진출한 행복한 마법소녀는 강력한 우승 후보인 고독한 마법소녀와 맞붙게 되었다. 참가자는 게임 중 【마법】을 사용할 수 있으며, 둘은 다음과 같은 마법을 가지고 있다.
- 행복한 마법소녀의 【세뇌】: 게임 중 최대 한 번, 다음 턴의 상대의 행동을 자신이 원하는 것으로 강제할 수 있다.
- 고독한 마법소녀의 【천리안】: 첫 턴이 시작하기 전에 스케치북에 적힌 정수 을 엿볼 수 있다.
고독한 마법소녀는 『자신에게는 【무적 전략】이 있기 때문에, 당신이 이기는 것은 절대 무리』라며 도발하고 있다. 그녀는 【천리안】을 사용한 후 항상 아래의 전략에 따라 행동한다.
- 가 의 배수가 되도록 카드를 낼 수 있다면 내고, 그렇지 않다면 마음대로† 카드를 낸다.
그녀의 【무적 전략】을 상대로 승리하여 누구의 마법이 더 강력한지 똑똑히 보여주자.
게임은 고독한 마법소녀부터 시작한다.
†카드를 마음대로 낸다는 것은 무작위로 내는 것이 아닐 수도 있다.
Interaction
당신의 프로그램은 아래의 과정을 통해 표준입력과 표준출력으로 인터랙터와 상호작용해야 한다.
먼저 스케치북에 적힌 정수 ()이 설정된다. 은 입력으로 주어지지 않는다.
당신은 행복한 마법소녀의 역할을, 인터랙터는 고독한 마법소녀의 역할을 맡는다. 게임이 종료될 때까지 고독한 마법소녀의 턴과 당신의 턴이 반복된다.
고독한 마법소녀의 턴에는 그녀가 낸 카드의 점수 ()가 입력으로 주어진다.
당신의 턴에는 두 정수 , ( )를 공백으로 구분하여 출력한다. 그 의미는 다음과 같다.
- 점수가 인 카드를 낸다.
- 이면 【세뇌】 마법을 사용하여 다음 턴의 상대가 내는 카드의 점수를 로 강제한다. 이면 마법을 사용하지 않는다. 마법은 게임 중 최대 한 번 사용할 수 있으며, 이 규칙을 어길 경우 WA를 받는다.
당신의 턴이 끝난 직후 이라면 마법 사용 여부에 관계없이 게임이 종료되며 이 입력으로 주어진다. 이 경우, 채점 결과로 WA를 받는다.
고독한 마법소녀의 턴이 끝난 직후 이라면 게임이 종료되며 그녀가 낸 카드의 점수 대신 이 입력으로 주어진다. 이 경우, 채점 결과로 AC를 받는다.
게임이 종료되어 이 입력으로 주어진 경우 즉시 프로그램을 종료해야 한다. 문제의 제한 안에 올바른 상호작용을 통해 답을 출력하지 못하면 예상치 못한 채점 결과를 받을 수 있다.
Samples
이다. 게임은 아래와 같이 진행되었다.
- 번째 턴에서, 은 의 배수이므로, 고독한 마법소녀는 을 낸다.
- 번째 턴에서 당신은 을 내고, 【세뇌】 마법을 사용한다.
- 번째 턴에서 고독한 마법소녀는 【세뇌】의 효과로 강제로 을 내고, 이 되어 패배한다.
예제에서는 게임 진행의 이해를 돕기 위해 의도적으로 작은 의 값이 사용되었으며, 입출력에 빈 줄이 추가되었다. 실제 채점 데이터에서는 항상 을 만족하며, 입출력에 빈 줄이 나타나지 않는다.
이다. 번째 턴에서 이 되어, 다음 턴에 고독한 마법소녀가 무엇을 내든 패배한다.
Notes
당신의 프로그램은 무언가를 출력한 후 즉시 출력 버퍼를 비워야 한다. 다음은 언어별 출력 버퍼를 비우는 방법이다.
- C —
fflush(stdout) - C++ —
std::cout.flush() - Python —
sys.stdout.flush() - Java —
System.out.flush() - 그 외의 언어는 각 언어의 Documentation을 참고한다.