고전적인 FFT 문제
시간 제한10초메모리 제한1024 MB
행의 길이가 증가하는 영 다이어그램에서 모든 칸을 덮는 룩의 최소 개수와 그 배치 방법 수를 구합니다.
문제
행과 열이 각각 개인 격자판이 있습니다. Arbok은 위에서 번째 행 ()에서 왼쪽 칸만 남도록 격자판의 일부를 잘라냈습니다. 이므로 격자판은 영 다이어그램(Young diagram) 모양입니다. Arbok은 남은 칸 중 일부에 룩(rook)을 놓으려 합니다.
룩은 한 칸을 차지하며, 빈 칸을 건너 가로나 세로 방향으로 몇 칸이든 이동할 수 있습니다.
어떤 칸에 룩이 놓여 있거나, 룩이 한 번의 이동으로 그 칸에 도달할 수 있으면 그 칸은 덮인 칸입니다.
남은 모든 칸이 덮이도록 룩을 놓을 때 필요한 최소 룩의 개수 과, 같은 조건을 만족하면서 개의 룩을 놓는 방법의 수 를 구하세요. 는 으로 나눈 나머지입니다.
입력
첫 줄에 격자판의 크기 이 주어집니다 ().
둘째 줄에는 Arbok이 남긴 각 행의 너비 이 주어집니다 ().
출력
정수 과 를 출력합니다. 은 남은 모든 칸을 덮는 데 필요한 룩의 최소 개수이고, 는 개의 룩으로 그렇게 하는 방법의 수를 으로 나눈 나머지입니다.
힌트
첫 번째 입력 예시에서는 룩 한 개로 모든 칸을 덮을 수 없지만, 룩 두 개면 충분합니다. 모든 칸을 덮는 룩 두 개의 배치는 6가지이며 다음과 같습니다 (R은 룩, *은 빈 칸):
R * * * * *
** R* R* R* *R **
*R* R** *R* **R R** RR*