만드는 중입니다

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

Yet Another Sequence Related Problem

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

요약
길이 M의 연속 구간 최댓값이 B와 일치하는 1에서 K 사이의 수열 A의 개수를 998244353으로 나눈 나머지로 구합니다. B에서 -1은 값을 모르는 자리입니다.
난이도

보통10점 중 7점

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

문제

정수로 이루어진 두 수열 A1..N+M−1A_{1..N+M-1}과 B1..NB_{1..N}이 있다. 수열 BB는 수열 AA에서 연속된 MM개 원소의 최댓값을 모은 것이다. 식으로 쓰면, 모든 i=1..Ni = 1..N에 대해 Bi=max⁡0≤j≤M−1Ai+jB_i = \max_{0 \le j \le M-1} A_{i+j}이다.

COVID-19 유행 때문에 AA는 전부 잃어버렸다. 설상가상으로 BB의 원소 중 0개 이상도 빠져 있다. 다행히 AA와 BB의 모든 원소는 1 이상 KK 이하라는 것은 기억한다.

주어진 BB에 맞는 AA가 하나가 아닐 수 있다는 것은 금방 알 수 있다. 조건을 만족하는 수열 AA의 개수를 세어라. 개수가 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 구한다.

입력

첫 줄에 세 정수 NN, MM, KK (1≤N,M,K≤100 0001 \le N, M, K \le 100\,000)가 주어진다. 둘째 줄에는 NN개의 정수 BiB_i (Bi∈{−1,1,2,…,K}B_i \in \{-1, 1, 2, \dots, K\})가 주어진다. 빠진 BB의 원소는 −1-1로 표시한다.

출력

조건을 만족하는 수열 AA의 개수를 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

예제3

  1. 예제 1

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

    입력
    5 4 6
    3 5 2 -1 3
    
    예상 출력
    0
    
  3. 예제 3

    입력
    5 3 7
    3 -1 -1 -1 5
    
    예상 출력
    8113