만드는 중입니다

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

고전 DP 문제

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

요약
행마다 왼쪽에서 a_i칸이 남은 격자에서 모든 칸을 룩이 덮도록 놓는 최소 개수와 그 배치 수를 998244353으로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

n행 n열의 격자가 있다. 아르보크는 위에서 i번째 행에 왼쪽부터 aia_i칸만 남도록 격자의 일부를 잘라냈다. 모든 i=1,2,…,ni = 1, 2, \ldots, n에 대해 a1≤a2≤…≤ana_1 \le a_2 \le \ldots \le a_n이므로 격자는 영 다이어그램 모양이다. 아르보크는 남은 칸 중 일부에 룩을 놓으려 한다.

룩은 칸 하나를 차지하고, 비어 있는 칸을 몇 칸이든 지나 가로 또는 세로로 움직일 수 있는 기물이다.

칸에 룩이 놓여 있거나, 룩이 한 번의 이동으로 그 칸에 갈 수 있으면 그 칸은 덮인 칸이다.

남은 모든 칸이 덮이도록 놓는 룩의 최소 개수 rr과, 같은 조건을 만족하도록 룩을 rr개 놓는 방법의 수 ww를 구하라. ww는 998244353으로 나눈 나머지이다.

입력

첫 줄에 격자의 크기 nn (1≤n≤50001 \le n \le 5000)이 주어진다.

둘째 줄에는 아르보크가 남긴 각 행의 너비 a1,a2,…,ana_1, a_2, \ldots, a_n (1≤a1≤a2≤…≤an≤n1 \le a_1 \le a_2 \le \ldots \le a_n \le n)이 주어진다.

출력

정수 rr과 ww를 출력한다. rr은 남은 모든 칸을 덮는 데 필요한 룩의 최소 개수이고, ww는 rr개의 룩으로 같은 결과를 얻는 배치의 수를 998244353으로 나눈 나머지이다.

힌트

첫 번째 예제에서는 룩이 한 개면 모든 칸을 덮을 수 없지만 두 개면 충분하다. 모든 칸을 덮는 두 개의 룩 배치는 여섯 가지이다 (R은 룩, *은 빈 칸을 뜻한다).

R          *          *          *          *          *  
**         R*         R*         R*         *R         ** 
*R*        R**        *R*        **R        R**        RR*

예제1

  1. 예제 1

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