아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

La Vie En Rose

시간 제한2.5초메모리 제한64 MB

요약
패턴 p에서 서로 겹치지 않고 인접하지 않은 위치들의 문자를 교환해 만들 수 있는 문자열이 s의 길이 m 부분 문자열 중 어디에 나타나는지 판별한다.
난이도

어려움10점 중 8점

유형
문자열 매칭, 동적 계획법, 문자열, 비트 연산
정답자
아직 제출이 없습니다

문제

Zhang 교수는 다중 패턴 매칭 문제를 풀고 싶지만, 패턴 문자열 p=p1p2…pmp = p_{1} p_{2} \ldots p_{m}을 하나만 가지고 있다. 그래서 그는 다음 방법으로 pp에서 가능한 한 많은 패턴 문자열을 만들어 내려고 한다.

  1. 1≤i1<i2<…<ik<∣p∣1 \le i_1 < i_2 < \ldots < i_k < |p|이고 모든 1≤j<k1 \le j < k에 대해 ∣ij−ij+1∣>1|i_{j} - i_{j + 1}| > 1인 인덱스 i1,i2,…,iki_1, i_2, \ldots, i_k를 고른다.
  2. 모든 1≤j≤k1 \le j \le k에 대해 pijp_{i_{j}}와 pij+1p_{i_{j} + 1}을 교환한다.

이제 문자열 s=s1s2…sns = s_{1} s_{2} \ldots s_{n}이 주어졌을 때, Zhang 교수는 만들어진 모든 패턴이 ss에서 나타나는 위치를 모두 찾으려고 한다.

입력

첫째 줄에 두 정수 nn과 mm이 주어진다 (1≤n≤1051 \le n \le 10^5, 1≤m≤min⁡(50 000,n)1 \le m \le \min (50\,000, n)). nn은 ss의 길이, mm은 pp의 길이이다.

둘째 줄에 문자열 ss, 셋째 줄에 문자열 pp가 주어진다. 두 문자열은 모두 알파벳 소문자로만 이루어져 있다.

출력

길이 nn의 이진 문자열을 출력한다. ii번째 문자가 '1'인 것과 부분 문자열 sisi+1…si+m−1s_{i} s_{i+1} \ldots s_{i+m-1}이 만들어진 패턴 중 하나인 것이 필요충분조건이다. 그렇지 않으면 '0'이어야 한다.

예제3

  1. 예제 1

    입력
    4 1
    abac
    a
    
    예상 출력
    1010
    
  2. 예제 2

    입력
    4 2
    aaaa
    aa
    
    예상 출력
    1110
    
  3. 예제 3

    입력
    9 3
    abcbacacb
    abc
    
    예상 출력
    100100100