binary는 호남선

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

binary는 호남선~

num row column char에~

binary는 호남선은 총 NN개의 01로 표현할 수 있다. 0은 저지대를 지나는 철로를 나타내고, 1은 고지대를 지나는 철로를 나타낸다.

binary는 호남선의 구간은 연속된 두 개의 철로를 뜻한다. 01은 오르막 구간, 10은 내리막 구간, 0011은 평탄한 구간이다.

binary는 호남선의 각 구간이 어떤 구간인지 파악하고 상대적 많고 적음을 알아내는 것은, 철로의 유지보수를 위해 매우 중요한 일이다.

입력

binary는 호남선의 철로 길이 NN이 주어진다. (8N<2 0488 \leq N < 2\ 048)

출력

다음을 표준 출력 스트림(stdout)으로 한 줄에 출력하여, 해당 위치의 철로가 무언인지 알아낼 수 있다.

  • ? kk : 왼쪽부터 kk번째 철로를 출력한다. (1kN1 \leq k \leq N)

각 질문을 출력한 후에는 반드시 표준 출력 버퍼를 flush 해야 하고, 표준 입력 스트림(stdin)을 통해 질문에 대한 답을 입력받아야 한다. 그렇지 않으면, 시간 초과 또는 런타임에러를 받는다.

질문하는 kk의 범위가 철로 구간을 벗어나는 경우, 틀렸습니다를 받는다.

질문은 최대 log_2N\lfloor log\_2 N \rfloor번 할 수 있고, 이보다 더 많이 질문을 하면 틀렸습니다를 받는다.

최대 log_2N\lfloor log\_2 N \rfloor번의 질문을 이용해, 정답을 아래의 표준 출력 스트림(stdout)을 이용해 한 번만 출력한다.

  • ! aa : 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()