만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

지그재그

시간 제한2초메모리 제한256 MB

요약
두 수열의 공통 부분수열 가운데 증가와 감소가 번갈아 나타나는 가장 긴 수열의 길이를 구합니다.
난이도

보통10점 중 6점

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

문제

수열 x(1),x(2),…,x(k)x(1), x(2), \ldots, x(k)는 연속한 세 원소가 비증가 또는 비감소 순서를 이루지 않을 때 지그재그 수열이다. 더 정확히 말하면, 모든 i=1,2,…,k−2i = 1, 2, \ldots, k-2에 대해 x(i+1)<x(i)x(i+1) < x(i)이고 x(i+1)<x(i+2)x(i+1) < x(i+2)이거나, x(i+1)>x(i)x(i+1) > x(i)이고 x(i+1)>x(i+2)x(i+1) > x(i+2)이어야 한다.

두 수열 a(1),…,a(n)a(1), \ldots, a(n)과 b(1),…,b(m)b(1), \ldots, b(m)이 주어진다. 두 수열에서 원소를 지워 서로 같게 만들고, 남은 수열이 지그재그 수열이 되도록 한다. 지워야 하는 원소 수의 최솟값이 kk이면 답은 m+n−km+n-k이다. 가장 긴 공통 지그재그 부분수열의 길이를 구하라.

입력

첫 줄에 nn (1≤n≤20001\leq n \leq 2000)이 주어지고, 이어서 nn개의 정수 a(1),…,a(n)a(1), \ldots, a(n)이 주어진다. 둘째 줄에는 mm (1≤m≤20001 \leq m \leq 2000)이 주어지고, 이어서 mm개의 정수 b(1),…,b(m)b(1), \ldots, b(m)이 주어진다. 모든 a(i)a(i)와 b(i)b(i)는 [−109,109][-10^9, 10^9] 범위에 있다.

출력

aa와 bb의 가장 긴 공통 지그재그 부분수열의 길이를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5 1 2 5 4 3
    5 4 1 2 5 3
    
    예상 출력
    3