만드는 중입니다

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

3학년의 과제

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

요약
s의 기호를 재배열해 만들 수 있는 문자열 중 t보다 사전순으로 작은 것의 개수를 998244353으로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

유형
조합론, 수학
정답자
아직 제출이 없습니다

문제

냉장고에서 기호가 적힌 자석을 발견한 어린 타일러가 있다. 이 자석들을 일렬로 늘어놓으면 문자열 ss가 된다.

타일러는 문자열을 좋아하고, 특히 문자열 tt보다 사전순으로 작은 문자열을 좋아한다. 자석을 가지고 놀던 타일러는 ss의 글자를 재배열해 만들 수 있는 서로 다른 문자열 중 tt보다 사전순으로 작은 것이 몇 개인지 궁금해한다. 타일러는 아직 3학년이라 이 질문에 답하지 못한다. ss의 글자를 재배열한 결과 중 tt보다 사전순으로 작은 것의 개수를 구하라.

문자열 xx가 yy보다 사전순으로 작다는 것은 다음 조건 중 하나를 만족한다는 뜻이다.

  • 두 문자열에 모두 존재하는 위치 mm이 있고, mm번째 기호 이전까지 두 문자열이 같으며, xx의 mm번째 기호가 yy의 mm번째 기호보다 작다.
  • xx가 yy의 접두사이다.

답이 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫 줄에 두 정수 nn과 mm (1≤n,m≤200 0001 \le n, m \le 200\,000)이 주어진다. 각각 문자열 ss와 tt의 길이이다.

둘째 줄에 ss의 기호 s1,s2,…,sns_1, s_2, \ldots, s_n (1≤si≤200 0001 \le s_i \le 200\,000)이 주어진다.

셋째 줄에 tt의 기호 t1,t2,…,tmt_1, t_2, \ldots, t_m (1≤ti≤200 0001 \le t_i \le 200\,000)이 주어진다.

출력

ss의 글자를 재배열해 만들 수 있는 문자열 중 tt보다 사전순으로 작은 것의 개수를 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

힌트

첫 번째 예제에서 세는 문자열은 [1 2 2]와 [2 1 2]이다. [2 2 1]은 [2 1 2 1]보다 사전순으로 크므로 세지 않는다.

두 번째 예제에서는 [4 3 2 1]을 제외한 모든 문자열을 세므로 답은 4!−1=234! - 1 = 23이다.

세 번째 예제에서는 [1 1 1 2]만 센다.

예제3

  1. 예제 1

    입력
    3 4
    1 2 2
    2 1 2 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    4 4
    1 2 3 4
    4 3 2 1
    
    예상 출력
    23
    
  3. 예제 3

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