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

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

단조성

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

요약
주어진 수열의 부분수열 가운데 인접한 원소 사이의 비교 부호가 길이 k인 주어진 패턴을 반복하는 가장 긴 부분수열의 길이를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 이분 탐색, 배열, 구현
정답자
아직 제출이 없습니다

문제

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

단조성 표식이 s1,s2,…,sns_1, s_2, \ldots, s_n 인 정수 수열 b1,b2,…,bn+1b_1, b_2, \ldots, b_{n+1} 이 다른 단조성 표식 s1′,s2′,…,sk′s'_1, s'_2, \ldots, s'_k 를 실현한다(realize) 는 것은, 모든 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 가 주어진다. 주어진 수열의 부분 수열 ai1,ai2,…,aima_{i_1}, a_{i_2}, \ldots, a_{i_m} (1≤i1<i2<⋯<im≤n1 \le i_1 < i_2 < \cdots < i_m \le n) 중에서 주어진 표식을 실현하는 가장 긴 것을 찾으시오.

입력

첫째 줄에 수열 (ai)(a_i) 의 길이와 단조성 표식 (sj)(s_j) 의 길이를 나타내는 두 정수 nn 과 kk (1≤n≤20 0001 \le n \le 20\,000, 1≤k≤1001 \le k \le 100) 가 공백 하나로 구분되어 주어진다.

둘째 줄에 수열 (ai)(a_i) 가 주어진다. 즉, nn 개의 정수 aia_i (1≤ai≤1 000 0001 \le a_i \le 1\,000\,000) 가 공백 하나로 구분되어 주어진다.

셋째 줄에 단조성 표식 (sj)(s_j) 가 주어진다. 즉, 각각 <<, >>, == 중 하나인 kk 개의 기호 sjs_j 가 공백 하나로 구분되어 주어진다.

출력

첫째 줄에 수열 a1,a2,…,ana_1, a_2, \ldots, a_n 의 부분 수열 중에서 표식 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 2
    1 3 2 4 3 5 4 6
    < >
    
    예상 출력
    8