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

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

단조성 2

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

요약
주어진 배열에서 인접 원소의 대소 관계가 주어진 <, >, = 주기 패턴을 따르는 가장 긴 부분수열의 길이를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 세그먼트 트리, 이분 탐색
정답자
아직 제출이 없습니다

문제

정수 수열 a1,a2,…,ana_1, a_2, \ldots, a_n에 대해, 이 수열의 단조성 표현을 기호 s1,s2,…,sn−1s_1, s_2, \ldots, s_{n-1}의 수열로 정의한다. 각 기호 sis_i는 aia_i와 ai+1a_{i+1}의 대소 관계를 나타내며, ai<ai+1a_i < a_{i+1}이면 <<, ai>ai+1a_i > a_{i+1}이면 >>, ai=ai+1a_i = a_{i+1}이면 ==이다. 예를 들어 수열 2,4,3,3,5,32, 4, 3, 3, 5, 3의 단조성 표현은 <,>,=,<,><, >, =, <, >이다.

단조성 표현이 s1,s2,…,sns_1, s_2, \ldots, s_n인 수열이 또 다른 표현 s1′,s2′,…,sk′s'_1, s'_2, \ldots, s'_k를 실현한다는 것은, 모든 i=1,2,…,ni = 1, 2, \ldots, n에 대해 si=s((i−1) mod k)+1′s_i = s'_{((i-1) \bmod k) + 1}이 성립함을 뜻한다. 다시 말해 s1,s2,…,sns_1, s_2, \ldots, s_n은 s1′,s2′,…,sk′s'_1, s'_2, \ldots, s'_k를 필요한 만큼 반복한 뒤 뒤쪽 일부를 잘라내어 얻을 수 있다. 예를 들어 2,4,3,3,5,32, 4, 3, 3, 5, 3은 <,>,=<, >, =와 <,>,=,<,><, >, =, <, >, 그리고 <,>,=,<,>,<,<,=<, >, =, <, >, <, <, = 등 많은 표현을 실현한다.

정수 수열 a1,a2,…,ana_1, a_2, \ldots, a_n과 단조성 표현 s1,s2,…,sks_1, s_2, \ldots, s_k가 주어진다. 인덱스가 1≤i1<i2<⋯<im≤n1 \le i_1 < i_2 < \cdots < i_m \le n인 부분 수열 ai1,ai2,…,aima_{i_1}, a_{i_2}, \ldots, a_{i_m} 중에서, 그 자신의 단조성 표현이 s1,s2,…,sks_1, s_2, \ldots, s_k를 실현하는 것을 생각하자. 이러한 부분 수열의 최대 길이 mm을 구하라. 원소가 하나뿐인 부분 수열은 (단조성 표현이 비어 있으므로) 항상 주어진 표현을 실현하므로, 답은 항상 11 이상이다.

입력

첫째 줄에 두 정수 nn과 kk가 공백으로 구분되어 주어진다 (1≤n≤500,0001 \le n \le 500{,}000, 1≤k≤500,0001 \le k \le 500{,}000). 각각 수열의 길이와 단조성 표현의 길이이다.

둘째 줄에 수열의 원소 a1,a2,…,ana_1, a_2, \ldots, a_n이 공백으로 구분되어 주어진다 (1≤ai≤1,000,0001 \le a_i \le 1{,}000{,}000).

셋째 줄에 단조성 표현을 이루는 kk개의 기호 s1,s2,…,sks_1, s_2, \ldots, s_k가 공백으로 구분되어 주어진다. 각 기호는 <<, >>, == 중 하나이다.

출력

부분 수열 자신의 단조성 표현이 s1,s2,…,sks_1, s_2, \ldots, s_k를 실현하는 부분 수열의 최대 길이 mm을 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    7 3
    2 4 3 1 3 5 3
    < > =
    
    예상 출력
    6
    
  2. 예제 2

    입력
    8 1
    1 3 2 4 3 5 6 1
    <
    
    예상 출력
    5