| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 (추가 시간 없음) | 1024 MB (추가 메모리 없음) | 53 | 25 | 23 | 46.000% |
이 문제는 인터랙티브 문제이다.
$L$ 이상 $R$ 이하인 서로 다른 정수가 앞면에 하나씩 적힌 카드 $R-L+1$장이 있다. 카드의 뒷면에는 아무것도 적혀있지 않다. 앨리스와 밥은 이 카드로 게임을 한다. 이때 한 명은 공격 측, 다른 한 명은 수비 측을 맡는다.
이후 공격 측이 뒤집은 카드들 중에서, 아래 두 조건을 모두 만족하는 서로 다른 세 장의 카드를 찾을 수 있다면 공격 측이 승리한다.
찾지 못했다면 수비 측이 승리한다.
밥은 앨리스에게 공격과 수비 중 원하는 역할을 선택할 기회를 주었다. 이때 앨리스가 이길 수 있는 전략을 구현해보자. 그런 전략이 항상 존재함을 보일 수 있다.
첫째 줄에 두 양의 정수 $L,ドル $R$이 공백으로 구분되어 주어진다. $(1\le L\le R\le 200\ 000)$
이후 앨리스가 공격 역할을 고른다면 $\tt{attack},ドル 수비 역할을 고른다면 $\tt{defense}$를 출력한다.
$\tt{attack}$을 출력하였다면 밥이 카드의 뒷면에 색칠을 한다. 이후 다음의 쿼리를 최대 10번까지 할 수 있다.
승리 조건을 만족하는 서로 다른 세 카드를 찾았다면 다음을 출력해 답을 제출할 수 있다.
$\tt{defense}$를 출력하였다면 길이가 $R-L+1$이고 $\tt{R},ドル $\tt{B}$로만 이루어진 문자열을 출력한다. $i$번째 문자는 앞면에 $L+i-1$가 적혀있는 카드의 뒷면에 색칠할 색깔을 나타낸다. 이때 출력된 색 배치는 공격 측이 카드를 어떻게 뒤집더라도 절대 승리할 수 없어야 한다.
각 줄을 출력 후 표준 출력 버퍼를 flush 해줘야 한다. 언어 별로 표준 출력 버퍼를 flush 하는 방법은 다음과 같다. 기타 언어의 경우 각 언어의 documentation을 참조하라.
fflush(stdout)std::cout << std::flushSystem.out.flush()sys.stdout.flush()이 문제의 인터랙터는 적응적이다. 단, 이전까지의 답변들과 모순되는 답변은 하지 않는다.
1 4
defense RBRB
1 10 R B B R B
attack ? 3 ? 7 ? 5 ? 4 ? 2 ! 2 5 7
예제의 입출력은 입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해 의도적으로 개행 간격 등을 조절한 것으로, 실제 입출력과는 다르다.
University > 서울대학교 > 서울대학교 프로그래밍 경시대회 > 2025 서울대학교 프로그래밍 경시대회 > Div.1 G번
University > 서울대학교 > 서울대학교 프로그래밍 경시대회 > 2025 서울대학교 프로그래밍 경시대회 > Div.2 G번