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

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

물결 수열

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

요약
두 배열에서 같은 값을 가지며 증가하는 인덱스 쌍을 골라, 선택한 값들이 엄격하게 오르내리는 파동 수열을 이루는 경우의 수를 998244353으로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

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

문제

물결을 본 적이 있는가? 자연이 만들어 내는 멋진 광경이다. Little Q는 이 멋진 것에 매료되어, 물결처럼 생긴 모든 것을 좋아한다. 형식적으로 그는 수열 a1,a2,…,ana_1, a_2, \ldots, a_n이 물결이라고 말한다. 이는 a1<a2>a3<a4>a5<a6…a_1 < a_2 > a_3 < a_4 > a_5 < a_6 \ldots일 때, 그리고 그때에만 성립한다.

이제 두 수열 a1,a2,…,ana_1, a_2, \ldots, a_n과 b1,b2,…,bmb_1, b_2, \ldots, b_m이 주어졌을 때, Little Q는 두 수열 f1,f2,…,fkf_1, f_2, \ldots, f_k와 g1,g2,…,gkg_1, g_2, \ldots, g_k (1≤fi≤n1 \leq f_i \leq n, fi<fi+1f_i < f_{i + 1}이고 1≤gi≤m1 \leq g_i \leq m, gi<gi+1g_i < g_{i + 1})를 찾으려 한다. 이때 afi=bgia_{f_i} = b_{g_i}가 항상 성립하고, 수열 af1,af2,…,afka_{f_1}, a_{f_2}, \ldots, a_{f_k}가 물결이어야 한다. 게다가 Little Q는 그러한 수열 쌍 ff와 gg가 몇 개인지 궁금해한다. 그를 도와 답을 구하는 프로그램을 작성하라.

입력

입력의 첫 번째 줄에는 두 정수 nn과 mm이 주어진다. 이는 각각 aa와 bb의 길이이다 (1≤n,m≤20001 \leq n, m \leq 2000).

두 번째 줄에는 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. 이는 수열 aa이다 (1≤ai≤20001 \leq a_i \leq 2000).

세 번째 줄에는 mm개의 정수 b1,b2,…,bmb_1, b_2, \ldots, b_m이 주어진다. 이는 수열 bb이다 (1≤bi≤20001 \leq b_i \leq 2000).

출력

한 줄에 하나의 정수를 출력한다. 이는 문제의 답이다. 답이 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

힌트

다음은 그러한 수열들의 목록이다.

  1. f=(1)f=(1), g=(2)g=(2).
  2. f=(1)f=(1), g=(3)g=(3).
  3. f=(2)f=(2), g=(4)g=(4).
  4. f=(3)f=(3), g=(5)g=(5).
  5. f=(1,2)f=(1,2), g=(2,4)g=(2,4).
  6. f=(1,2)f=(1,2), g=(3,4)g=(3,4).
  7. f=(1,3)f=(1,3), g=(2,5)g=(2,5).
  8. f=(1,3)f=(1,3), g=(3,5)g=(3,5).
  9. f=(1,2,3)f=(1,2,3), g=(2,4,5)g=(2,4,5).
  10. f=(1,2,3)f=(1,2,3), g=(3,4,5)g=(3,4,5).

예제1

  1. 예제 1

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