스펀지

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

요약
K마리의 구분 가능한 바이러스가 W×H 격자에서 8방향(또는 정지)으로 최대 T초 움직일 때 T초 후 가능한 서로 다른 분포의 수를 998244353으로 나눈 나머지로 구한다.
난이도

보통10점 중 5점

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

문제

가로 WW칸 세로 HH칸의 격자 모양 스펀지가 있다. 이 스펀지는 1×11 \times 1 크기의 칸들로 나누어져 있으며 곳곳에 구멍이 뚫려 있어 바이러스가 이동할 수 있는 특이한 성질이 있다.

바이러스는 11초마다 스펀지 바깥으로 벗어나지 않는 선에서 자신이 위치한 칸의 상하좌우 및 대각선 88칸으로 이동하거나, 자신이 위치한 칸에 가만히 있을 수 있다. 한 칸에 바이러스는 여러 마리 존재할 수 있으며, 모양이 다르기 때문에 구분이 가능하다.

raa는 바이러스들을 관찰하다 TT초 후 가능한 서로 다른 바이러스 분포의 수가 궁금해졌다. 두 바이러스 분포의 어떤 바이러스의 위치가 다를 경우 두 분포는 다르다. raa를 도와 그 수를 구하자.

입력

첫 번째 줄에 스펀지의 가로 길이 WW와 세로 길이 HH, 바이러스의 수 KK, raa가 바이러스를 관찰할 시간 TT가 공백으로 구분되어 주어진다. (1≤W,H,K≤106;(1 \leq W, H, K \leq 10^6; 0≤T≤106)0 \leq T \leq 10^6)

이어서 KK줄에 걸쳐 각 바이러스의 현재 위치가 주어진다. 그중 (i+1)(i+1)번째 줄에는 ii번째 바이러스의 위치를 나타내는 두 정수 x_i,y_ix\_{i}, y\_{i}가 공백으로 구분되어 주어진다. 이는 ii번째 바이러스가 현재 스펀지의 맨 왼쪽 위 칸부터 가로로 x_ix\_{i}번째, 세로로 y_iy\_{i}번째 칸에 있음을 의미한다. (1≤x_i≤W;(1\leq x\_{i} \leq W; 1≤y_i≤H)1\leq y\_{i} \leq H)

입력으로 주어지는 수는 모두 정수이다.

출력

TT초 후 가능한 서로 다른 바이러스 분포의 수를 구하여라. 수가 매우 커질 수 있으므로 998,244,353998 \\, 244 \\, 353로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    7 6 1 2
    3 3
    
    예상 출력
    25
    
  2. 예제 2

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