만드는 중입니다

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

로봇 업그레이드

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

요약
N개 부품마다 0 이상 M 이하의 업그레이드 횟수를 정할 때, 각 i에 대해 i회 이상 업그레이드된 부품이 A_i개를 넘지 않는 경우의 수를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

ICPC 왕국이 악성 풍선의 공격을 받고 있다! 다행히 로봇 모건이 왕국을 지킬 준비를 마쳤다. 힘을 키우기 위해 업그레이드할 수 있는 부품이 NN개 있으며, 각 부품은 1번부터 NN번까지 번호가 매겨져 있다. 각 부품은 0번부터 MM번까지(양 끝 포함) 업그레이드할 수 있다.

자원을 아끼기 위해 모건의 업그레이드에는 MM개의 제한 조건이 있으며, 1번부터 MM번까지 번호가 매겨져 있다. 제한 조건 ii에 대해, ii번 이상 업그레이드된 부품의 개수는 AiA_i를 넘을 수 없다.

아드리안은 모건에게 어떤 업그레이드를 적용할지 계획하면서, 모든 제한 조건을 만족하는 업그레이드 구성이 몇 가지인지 궁금해한다. 두 구성은 적어도 한 부품의 업그레이드 횟수가 다를 때에만 서로 다른 구성이다. 답이 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 구한다.

입력

첫 줄에 두 정수 NN과 MM이 주어진다 (1≤N≤100 0001 \le N \le 100\,000, 1≤M≤101 \le M \le 10). 다음 줄에는 제한 조건을 나타내는 정수 A1,A2,…,AMA_1, A_2, \dots, A_M이 주어진다 (1≤Ai≤N1 \le A_i \le N). 이 값들은 비증가 순서, 즉 A1≥A2≥⋯≥AMA_1 \ge A_2 \ge \dots \ge A_M으로 주어진다.

출력

모든 제한 조건을 만족하는 업그레이드 구성의 수를 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3 5
    2 2 1 1 1
    
    예상 출력
    64
    
  2. 예제 2

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

    입력
    16 8
    16 16 8 4 4 2 1 1
    
    예상 출력
    720246211