Grid Guardian
시간 제한8초메모리 제한512 MB
n×m 격자에서 모든 2×2 부분 격자에 장애물이 하나 이상 있도록 최소 개수의 장애물을 놓는 방법의 수를 p로 나눈 나머지로 구합니다.
문제
앨리스는 격자에 블록을 놓으려 한다. 블록은 축에 평행하게 놓여야 하며, 정확히 격자 칸 4개를 덮어야 한다.
밥은 앨리스가 블록을 놓지 못하게 막으려 한다. 그래서 일부 칸에 장애물을 놓는다. 장애물을 놓은 뒤에는 격자의 모든 부분 격자에 장애물이 적어도 하나 있어야 한다. 밥은 장애물을 가능한 한 적게 놓으려 한다.
앨리스가 블록을 놓지 못하도록 밥이 최소 개수의 장애물을 놓는 방법의 수를 구하라. 답은 소수 로 나눈 나머지로 출력한다. 답은 장애물의 최소 개수가 아니라 놓는 방법의 수이다. 예를 들어 이면 밥은 장애물 1개만 놓으면 되고, 그 방법은 4가지이므로 답은 4이다.
입력
첫 줄에 공백으로 구분된 세 정수 (), (), ()가 주어진다. 격자의 크기는 이며, 는 소수인 나눗셈 법이다.
출력
밥이 격자에 최소 개수의 장애물을 놓아 앨리스가 블록을 놓지 못하게 하는 방법의 수를 로 나눈 나머지를 한 정수로 출력한다.