정수 수열 a1,a2,…,an에 대해, 이 수열의 단조성 표현을 기호 s1,s2,…,sn−1의 수열로 정의한다. 각 기호 si는 ai와 ai+1의 대소 관계를 나타내며, ai<ai+1이면 <, ai>ai+1이면 >, ai=ai+1이면 =이다. 예를 들어 수열 2,4,3,3,5,3의 단조성 표현은 <,>,=,<,>이다.
단조성 표현이 s1,s2,…,sn인 수열이 또 다른 표현 s1′,s2′,…,sk′를 실현한다는 것은, 모든 i=1,2,…,n에 대해 si=s((i−1)modk)+1′이 성립함을 뜻한다. 다시 말해 s1,s2,…,sn은 s1′,s2′,…,sk′를 필요한 만큼 반복한 뒤 뒤쪽 일부를 잘라내어 얻을 수 있다. 예를 들어 2,4,3,3,5,3은 <,>,=와 <,>,=,<,>, 그리고 <,>,=,<,>,<,<,= 등 많은 표현을 실현한다.
정수 수열 a1,a2,…,an과 단조성 표현 s1,s2,…,sk가 주어진다. 인덱스가 1≤i1<i2<⋯<im≤n인 부분 수열 ai1,ai2,…,aim 중에서, 그 자신의 단조성 표현이 s1,s2,…,sk를 실현하는 것을 생각하자. 이러한 부분 수열의 최대 길이 m을 구하라. 원소가 하나뿐인 부분 수열은 (단조성 표현이 비어 있으므로) 항상 주어진 표현을 실현하므로, 답은 항상 1 이상이다.
첫째 줄에 두 정수 n과 k가 공백으로 구분되어 주어진다 (1≤n≤500,000, 1≤k≤500,000). 각각 수열의 길이와 단조성 표현의 길이이다.
둘째 줄에 수열의 원소 a1,a2,…,an이 공백으로 구분되어 주어진다 (1≤ai≤1,000,000).
셋째 줄에 단조성 표현을 이루는 k개의 기호 s1,s2,…,sk가 공백으로 구분되어 주어진다. 각 기호는 <, >, = 중 하나이다.
부분 수열 자신의 단조성 표현이 s1,s2,…,sk를 실현하는 부분 수열의 최대 길이 m을 정수 하나로 출력한다.