binary는 호남선
시간 제한1초메모리 제한512 MB
개별 비트를 최대 floor(log2 N)번 질문해, 0과 1로 된 문자열에서 01 구간이 더 많은지, 01과 10이 같은지, 10이 더 많은지 판별한다.
문제
binary는 호남선~
num row column char에~
binary는 호남선은 총 개의 0과 1로 표현할 수 있다. 0은 저지대를 지나는 철로를 나타내고, 1은 고지대를 지나는 철로를 나타낸다.
binary는 호남선의 구간은 연속된 두 개의 철로를 뜻한다. 01은 오르막 구간, 10은 내리막 구간, 00과 11은 평탄한 구간이다.
binary는 호남선의 각 구간이 어떤 구간인지 파악하고 상대적 많고 적음을 알아내는 것은, 철로의 유지보수를 위해 매우 중요한 일이다.
입력
binary는 호남선의 철로 길이 이 주어진다. ()
출력
다음을 표준 출력 스트림(stdout)으로 한 줄에 출력하여, 해당 위치의 철로가 무언인지 알아낼 수 있다.
?: 왼쪽부터 번째 철로를 출력한다. ()
각 질문을 출력한 후에는 반드시 표준 출력 버퍼를 flush 해야 하고, 표준 입력 스트림(stdin)을 통해 질문에 대한 답을 입력받아야 한다. 그렇지 않으면, 시간 초과 또는 런타임에러를 받는다.
질문하는 의 범위가 철로 구간을 벗어나는 경우, 틀렸습니다를 받는다.
질문은 최대 번 할 수 있고, 이보다 더 많이 질문을 하면 틀렸습니다를 받는다.
최대 번의 질문을 이용해, 정답을 아래의 표준 출력 스트림(stdout)을 이용해 한 번만 출력한다.
!: binary는 호남선에서 오르막 구간의 수가 내리막 구간의 수보다 많다면1을, 같다면0을, 적다면-1을 출력한다.
그 후 반드시 표준 출력 버퍼를 flush해야 하고, 프로그램을 종료한다. 이것은 질문 횟수에 포함되지 않는다.
힌트
출력 후에는 표준 출력 버퍼를 flush해 주어야 한다. 언어 별로 표준 출력 버퍼를 flush하는 방법은 다음과 같다.
- C: fflush(stdout)
- C++: std::cout << std::flush
- Java: System.out.flush()
- Python: sys.stdout.flush()
- Kotlin: System.out.flush()