만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

숨겨진 수열

시간 제한1초메모리 제한512 MB

요약
길이 N의 숨겨진 이진 문자열을 찾는 문제입니다. 임의의 이진 문자열이 그 문자열의 부분 수열인지 물어보며, 질문 문자열의 최대 길이를 짧게 유지해야 합니다.
난이도

보통10점 중 7점

유형
문자열, 그리디, 분할 정복
정답자
아직 제출이 없습니다

문제

잘 해냈다! 드디어 보물 지도의 X 표시 지점에 도착했지만, 보물 상자를 열려면 먼저 암호를 풀어야 한다. 상자에 붙은 라벨에 게임 규칙이 적혀 있다. 암호는 길이가 NN인 이진 수열이고, 이 수열을 찾기 위해 다음 형태의 질문을 할 수 있다. "숨겨진 수열의 부분수열이 SS인가?"

이진 수열 SS의 값이 S1,S2,…,SKS_1, S_2, \ldots, S_K이고 암호 CC의 값이 C1,C2,…,CNC_1, C_2, \ldots, C_N일 때, CC에서 일부 값을 지워 SS를 얻을 수 있으면 SS는 CC의 부분수열이다. 형식으로 쓰면, 모든 1≤j≤K1 \le j \le K에 대해 Cij=SjC_{i_j} = S_j를 만족하는 KK개의 번호 1≤i1<i2<⋯<iK≤N1 \le i_1 < i_2 < \cdots < i_K \le N이 존재할 때 SS는 CC의 부분수열이다.

암호를 풀면 보물의 일부를 받는다. 던진 질문 중 가장 긴 질문의 길이가 짧을수록 더 많은 보물을 받는다. 이 게임에서 보물은 100점으로 표시된다.

예제1

  1. 예제 1

    입력
    1
    
    예상 출력
    ? 0
    ! 1