시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 (추가 시간 없음) | 1024 MB (추가 메모리 없음) | 58 | 35 | 20 | 50.000% |
동전 수집가 승재는 동전을 무게별로 분류해 가지고 있었다. 하지만 어디선가 고양이가 나타나 동전을 마구잡이로 섞으며 "이것도 XOR해 보시지!"라는 정체불명의 대사만 남기고 사라져버렸다! 한낱 고양이에게 질 수 없었던 승재는 직접 만든 XOR-저울을 이용해 동전을 다시 분류하기로 한다.
XOR-저울은 양팔 저울을 개조한 것으로, 양쪽의 무게를 각각 잰 후 그 XOR값을 반환한다. 하지만, 개조 과정에서 문제가 있었는지 한쪽이라도 비어있다면 작동하지 않는다.
승재가 수집한 동전에는 몇 가지 규칙이 있다.
위 조건들을 이용해 승재를 도와 동전을 모두 분류해보자.
첫 번째 줄에 동전의 개수 $n$이 주어진다. $(k \leq n \leq 10\,000)$ 이때 동전의 번호는 $0$번부터 $n-1$번까지이다.
동전의 최대 무게 $k$는 주어지지 않는다. $(3 \leq k \leq 1\,000$, $k \neq 2 \times 2^m-2$, $m \geq 2)$
다음을 표준 출력 스트림(stdout)으로 한 줄에 출력하여, 동전 무게의 합의 xor 값을 알아낼 수 있다.
각 질문을 출력한 후에는 반드시 표준 출력 버퍼를 flush 해야 하고, 표준 입력 스트림(stdin)을 통해 질문에 대한 답을 입력받아야 한다. 그렇지 않으면, 시간 초과 또는 런타임에러를 받는다.
질문하는 $a_0,$ $\cdots,$ $a_{i-1},$ $b_0,$ $\cdots,$ $b_{j-1}$의 범위가 동전 번호를 벗어나는 경우, 틀렸습니다를 받는다.
질문은 최대 $n-1$번 할 수 있고, 이보다 더 많이 질문을 하면 틀렸습니다를 받는다.
최대 $n-1$번의 질문을 이용해, 정답을 아래의 표준 출력 스트림(stdout)을 이용해 한 번만 출력한다.
그 후 반드시 표준 출력 버퍼를 flush해야 하고, 프로그램을 종료한다. 이것은 질문 횟수에 포함되지 않는다.
5 12 11
? 1 2 -1 3 4 -1 ? 0 1 4 -1 2 -1 ! 1 2 3 4 5
입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해 의도적으로 줄 간격을 조절한 것으로, 실제 입출력과는 다르다.
질의를 통해 $(c_1 + c_2) \oplus (c_3+c_4) = 12$, $(c_0 + c_1 + c_4) \oplus c_2 = 11$을 알 수 있고, 답으로 $c_0=1$, $c_1=2$, $c_2=3$, $c_3=4$, $c_4=5$를 출력하였다.
출력 후에는 표준 출력 버퍼를 flush해 주어야 한다. 언어 별로 표준 출력 버퍼를 flush하는 방법은 다음과 같다.
University > 연세대학교 > 2022 연세대학교 신학기맞이 프로그래밍 경진대회 K번