무작위로 이동하기
시간 제한2초메모리 제한1024 MB
배열의 각 접두사마다, 무작위 위치에서 시작한 포인터가 무작위로 좌우 이동한 뒤 얻을 수 있는 최대 기댓값을 998244353으로 나눈 나머지로 구합니다.
문제
배열 위에서 다음 게임을 생각해 봅시다.
당신은 포인터입니다. 처음에는 배열의 원소 하나를 가리키며, 모든 원소가 같은 확률로 선택됩니다.
게임의 매 순간 다음 중 하나를 할 수 있습니다.
- 게임 종료. 게임이 끝나고, 점수는 가리키고 있는 원소의 값입니다.
- 이동. 왼쪽 또는 오른쪽 인접 원소로 각각 같은 확률로 이동합니다. 이동한 뒤 배열의 범위를 벗어날 수 있다면 이 선택지는 고를 수 없습니다. (역참조되어 염소로 변할 수도 있고, 게임 전체가 최적화로 사라질 수도 있습니다. 정의되지 않은 동작이라 무슨 일이 일어날지 알 수 없습니다. 어느 쪽도 원하지 않을 것입니다.)
이 선택을 게임이 끝날 때까지 반복합니다. 임을 증명할 수 있습니다. 여기서 은 이동을 번 선택할 수 있는 확률입니다.
배열의 점수는 최적으로 플레이할 때 얻을 수 있는 기대 점수의 최댓값입니다. (당신은 똑똑한 포인터입니다.)
배열 가 주어집니다. 각 접두사에 대해 점수를 998244353으로 나눈 나머지를 구하세요.
정수가 아닐 수도 있는 수 를 으로 나눈 나머지는 다음과 같이 정의합니다. 심사위원은 가 어떤 기약분수 와 같고, 가 에 대한 역원을 가짐을 보장합니다. 이때 를 으로 나눈 나머지는 이상 이하의 정수 이며, 가 으로 나누어떨어집니다. 이러한 는 유일합니다.
입력
첫 줄에 정수 ()이 주어집니다. 이는 의 길이입니다.
둘째 줄에 공백으로 구분된 정수 () 개가 주어집니다. 이는 의 원소입니다.
출력
개의 정수를 출력하세요. 번째 정수는 길이가 인 접두사의 점수를 998244353으로 나눈 나머지입니다.
힌트
첫 번째 입력 예제의 길이 3인 접두사, 즉 배열 전체 를 생각해 봅시다. 두 번째 원소에서 시작하면 이동하는 것이 최적 전략입니다. 한 번 이동한 뒤에는 더 이상 이동할 수 없습니다. 다른 원소에서 시작하면 이동하지 않습니다.
이때 점수는 이며, 998244353으로 나눈 나머지는 499122179입니다.