새해와 직사각형
시간 제한3초메모리 제한1024 MB
n x n 격자에 숨겨진 직사각형을 개수 질의로 찾습니다. 질의 횟수 q 안에 끝내야 하며 대화형으로 진행됩니다.
문제
이 문제는 대화형 문제다.
새해에 데드 모로즈가 글렙에게 오랫동안 바라던 선물을 주었다. 그 선물은 크기의 격자 정사각형이다. 이 선물에는 비밀이 숨어 있다. 데드 모로즈가 정사각형 안에서 공백이 아닌 직사각형 하나를 고르고, 그 직사각형의 모든 칸에 귤을 한 개씩 놓았다.
글렙은 선물을 받으려면 데드 모로즈와 게임을 해야 한다. 글렙은 귤이 모두 들어 있는 직사각형이 어디인지 맞혀야 한다. 행과 열은 아래에서 위로, 왼쪽에서 오른쪽으로 부터 까지 번호가 붙어 있다. 글렙은 두 가지 질의를 할 수 있다.
? x_1 y_1 x_2 y_2(, ): 왼쪽 아래 칸이 이고 오른쪽 위 칸이 인 직사각형 안에 귤이 몇 개 있는지 데드 모로즈가 답한다.! x_1 y_1 x_2 y_2(, ): 글렙이 위치를 확신하면 이 질의로 답을 보고한다. 은 예상한 직사각형의 왼쪽 아래 칸이고, 는 오른쪽 위 칸이다.
입력
프로그램은 정사각형의 크기를 나타내는 정수 () 하나를 입력으로 받는다.
? 질의를 할 때마다, 요청한 직사각형 안에 있는 귤의 개수가 주어진다.
출력
위 형식에 맞는 올바른 질의만 출력해야 한다. 마지막에는 ! 질의 하나만 출력하고, 그 직후 프로그램을 즉시 종료해야 한다. 출력할 수 있는 ? 질의는 최대 개다 (는 그룹 번호에 따라 다르다). 마지막 ! 질의는 이 개에 포함되지 않는다.
출력 형식을 정확히 지켜야 한다. 각 줄을 출력한 뒤에는 출력 버퍼를 비운다. Pascal이나 Delphi에서는 flush(output), C/C++에서는 fflush(stdout) 또는 cout.flush(), Python에서는 sys.stdout.flush(), Java에서는 System.out.flush()를 쓴다.
힌트
첫 번째 테스트를 통과하려고 예제와 똑같은 질의를 할 필요는 없다.