시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
3 초 | 1024 MB | 54 | 9 | 9 | 18.367% |
설곽국에는 예지와 의행이라는 두 명품 브랜드가 있습니다. 두 브랜드에서는 보석을 꿰어 만든 명품 목걸이를 생산합니다. 각각의 보석은 영어 소문자 중 하나에 해당하는 약칭을 가지고 있습니다.
두 브랜드는 모두 보석을 자체 생산한다고 주장합니다. 브루는 두 브랜드의 보석이 비슷하다는 제보를 받고 목걸이의 보석을 비교해 보기로 했습니다. 보석은 육안으로는 비교가 불가능해서, 기계를 이용해 비교해야 합니다. 기계를 한 번 사용할 때마다 두 보석이 같은지 또는 다른지를 알 수 있습니다.
브루에게는 예지 브랜드에서 생산한 목걸이 A와, 의행 브랜드에서 생산한 목걸이 B가 있습니다. 두 목걸이에는 각각 $N$개의 보석이 있습니다. 기계를 적은 횟수로 사용해 목걸이 A와 목걸이 B 양쪽에 모두 포함된 보석 종류가 하나라도 있는지 판별하는 프로그램을 작성하세요.
입력의 첫 줄에는 목걸이 당 보석의 수 $N$과 서브태스크의 번호 $s$가 띄어쓰기를 사이에 두고 주어집니다. 이 두 수를 먼저 입력받아야 합니다.
이후 문자열 "? [X1] [Y1] [X2] [Y2]"를 출력해 기계를 이용할 수 있습니다. 각 칸에는 다음 규칙을 따라 출력합니다.
예를 들어, 목걸이 A의 세 번째 보석과 목걸이 B의 5번째 보석을 비교하는 경우, “? A 3 B 5”를 출력합니다.
출력한 뒤에는 줄을 바꾸고 표준 출력 버퍼를 플러시(flush
)해야 합니다. 언어별로 표준 출력 버퍼를 플러시하는 방법은 다음과 같습니다.
fflush(stdout);
(printf
를 사용 중인 경우)std::cout << std::flush;
(std::cout
을 사용 중인 경우)sys.stdout.flush()
(코드 최상단에 import sys
가 필요)기계를 한 번 사용한 뒤에는 정수 하나를 입력받아야 합니다. 해당 정수가 1인 경우 두 보석의 종류가 같고, 0인 경우 두 보석의 종류가 다름을 의미합니다.
만약 답을 알아낸 경우, 다음 지시에 따라 행동하세요.
답을 출력한 이후 프로그램은 즉시 종료되어야 합니다.
해당 서브태스크에서 한 번의 실행에 기계를 사용한 최대 횟수를 $Q$라고 할 때, 양수 점수를 받기 위한 조건은 다음과 같습니다. 모든 점수는 소수점 둘째 자리까지 버림합니다.
번호 | 배점 | 제한 |
---|---|---|
1 | 10 | $N \le 100$, $Q \le 10000$, $s = 1$ |
2 | 90 | $N \le 1000$, $Q \le 60000$, $s = 2$ |
위 조건을 만족했을 때, 점수는 아래와 같은 기준으로 매겨집니다.
$Q$ | $60000$ | $50000$ | $30000$ | $26000$ | $15000$ |
$f(Q)$ | $30$ | $45$ | $60$ | $75$ | $90$ |
2 1 0 1
? A 1 B 1 ? A 1 B 2 ! 1
빈 줄은 시간에 따른 입력과 출력의 진행을 명확히 나타내기 위해 위해 임의로 추가한 것으로, 실제 입출력 때는 빈 줄을 출력하지 말아야 합니다.
High School > 서울과학고등학교 > 2023 SciCom Qualification Test E번