결정 장애
시간 제한3초메모리 제한1024 MB
N × M 격자의 각 칸에서 최소화와 최대화가 번갈아 진행되는 게임의 결과 효용을 구하고, 모든 칸의 합을 998244353으로 나눈 나머지를 출력합니다.
문제
Nikolaj는 크기의 격자로 이루어진 도시에 산다. 행은 1부터 까지, 열은 1부터 까지 번호가 매겨져 있다. 행 , 열 에 있는 칸은 로 적는다. Nikolaj는 일자리가 없어서 개 회사에서 제안을 받았다. 번째 회사의 사무실은 칸 에 있으며, 같은 칸에 사무실이 두 개 있는 경우는 없다. Nikolaj는 이 칸 중 하나에 들어가기만 하면, 그 칸에 사무실이 있는 회사에 바로 채용된다. 어느 칸으로 갈지 정하기 위해 각 일자리의 효용을 잰다. 효용은 이상 이하의 정수이며, 그 일을 하면 Nikolaj에게 얼마나 이로운지를 나타낸다. 집에서 아무것도 하지 않는 경우의 효용은 이다.
Nikolaj는 칸에서 출발하며, 처음에는 효용을 최소화하려고 한다. 매초 또는 중 한 칸으로 이동한다. 한 칸 이동할 때마다 마음이 바뀌어 이번에는 효용을 최대화하려고 한다. 이렇게 최소화와 최대화가 번갈아 반복된다. 과정은 Nikolaj가 사무실 칸에 도달하거나 격자 밖으로 벗어날 때까지 계속된다. 모든 사무실을 지나쳐 격자 밖으로 나가면 일자리를 얻지 못하고 효용은 이 된다.
Nikolaj는 이동할 때마다 현재 목표에 가장 맞는 칸을 고르며, 다른 성격이 어떻게 행동할지도 알고 있다. 두 성격이 서로 겨루는 게임으로 생각해도 된다. 출발 칸이 사무실이면 곧바로 그곳에 채용된다.
를 Nikolaj가 에서 출발했을 때 얻는 효용이라 하자. 개 칸 전체에 대해 의 합을 구하라. 결과는 으로 나눈 나머지를 출력한다.
입력
첫 줄에 정수 , , 가 주어진다 (, ).
이어지는 개 줄에는 정수 , , 가 주어진다. 이는 번째 회사의 사무실이 칸 에 있고, 그 일자리의 효용이 라는 뜻이다 (, , ).
출력
개 칸 모두에 대해 최종 효용의 합을 구하고, 으로 나눈 나머지를 정수 하나로 출력한다.