LCS Making

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

요약
길이 N의 소문자 문자열 S가 주어질 때, 길이 N인 어떤 문자열 T가 S와의 최장 공통 부분 수열 길이를 정확히 K로 만드는지 판정해 1 또는 0을 출력한다.
난이도

보통10점 중 6점

유형
문자열, 그리디, 조합론
정답자
아직 제출이 없습니다

문제

어떤 두 수열의 최장 공통 부분 수열(Longest Common Subsequence, 이하 LCS\text{LCS})은 두 수열 모두의 부분 수열이 되는 수열 중 가장 긴 것을 말한다. 예를 들어, abcdef와 agcaxf의 LCS\text{LCS}는 acf가 된다.

LCS\text{LCS}와 관련된 문제를 내고 싶던 Vermeil은 테스트 케이스를 만드는 과정에서 난관에 봉착했다. 알파벳 소문자로만 이루어진 길이 NN의 문자열 SS가 있을 때, LCS(S,T)\text{LCS}(S, T)의 길이가 KK가 되도록 하는 문자열 TT를 찾으려 한다. 이때 TT는 알파벳 소문자로만 이루어져야 하며, 문자열 SS와 TT의 길이는 같아야 한다. NN과 KK, 그리고 문자열 SS가 주어질 때, 찾으려는 문자열 TT가 존재하는지의 여부를 Vermeil에게 알려주자.

입력

첫 번째 줄에 정수 NN, KK가 공백으로 구분되어 주어진다. (1≤K≤N≤200 000)(1 \leq K \leq N \leq 200\ 000)

두 번째 줄에 알파벳 소문자로만 이루어진 길이 NN의 문자열 SS가 주어진다.

출력

∣LCS(S,T)∣=K|\text{LCS}(S, T)| = K를 만족하는 TT가 존재한다면 1을, 존재하지 않는다면 0을 출력한다. 이때 ∣LCS(S,T)∣|\text{LCS}(S, T)|는 LCS(S,T)\text{LCS}(S, T)의 길이이다.

예제1

  1. 예제 1

    입력
    7 1
    vermeil
    
    예상 출력
    1