아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

무작위로 이동하기

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

요약
배열의 각 접두사마다, 무작위 위치에서 시작한 포인터가 무작위로 좌우 이동한 뒤 얻을 수 있는 최대 기댓값을 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

유형
배열, 그리디, 스택, 수학
정답자
아직 제출이 없습니다

문제

배열 위에서 다음 게임을 생각해 봅시다.

당신은 포인터입니다. 처음에는 배열의 원소 하나를 가리키며, 모든 원소가 같은 확률로 선택됩니다.

게임의 매 순간 다음 중 하나를 할 수 있습니다.

  1. 게임 종료. 게임이 끝나고, 점수는 가리키고 있는 원소의 값입니다.
  2. 이동. 왼쪽 또는 오른쪽 인접 원소로 각각 같은 확률로 이동합니다. 이동한 뒤 배열의 범위를 벗어날 수 있다면 이 선택지는 고를 수 없습니다. (역참조되어 염소로 변할 수도 있고, 게임 전체가 최적화로 사라질 수도 있습니다. 정의되지 않은 동작이라 무슨 일이 일어날지 알 수 없습니다. 어느 쪽도 원하지 않을 것입니다.)

이 선택을 게임이 끝날 때까지 반복합니다. lim⁡m→∞f(m)=0\lim_{m \to \infty} f(m) = 0임을 증명할 수 있습니다. 여기서 f(m)f(m)은 이동을 mm번 선택할 수 있는 확률입니다.

배열의 점수는 최적으로 플레이할 때 얻을 수 있는 기대 점수의 최댓값입니다. (당신은 똑똑한 포인터입니다.)

배열 aa가 주어집니다. 각 접두사에 대해 점수를 998244353으로 나눈 나머지를 구하세요.

정수가 아닐 수도 있는 수 XX를 MM으로 나눈 나머지는 다음과 같이 정의합니다. 심사위원은 XX가 어떤 기약분수 PQ\frac{P}{Q}와 같고, QQ가 MM에 대한 역원을 가짐을 보장합니다. 이때 XX를 MM으로 나눈 나머지는 00 이상 M−1M-1 이하의 정수 AA이며, P−QAP - QA가 MM으로 나누어떨어집니다. 이러한 AA는 유일합니다.

입력

첫 줄에 정수 nn (1≤n≤5⋅1051 \leq n \leq 5 \cdot 10^5)이 주어집니다. 이는 aa의 길이입니다.

둘째 줄에 공백으로 구분된 정수 aia_i (1≤ai≤1061 \leq a_i \leq 10^6) nn개가 주어집니다. 이는 aa의 원소입니다.

출력

nn개의 정수를 출력하세요. ii번째 정수는 길이가 ii인 접두사의 점수를 998244353으로 나눈 나머지입니다.

힌트

첫 번째 입력 예제의 길이 3인 접두사, 즉 배열 전체 [3,1,2][3, 1, 2]를 생각해 봅시다. 두 번째 원소에서 시작하면 이동하는 것이 최적 전략입니다. 한 번 이동한 뒤에는 더 이상 이동할 수 없습니다. 다른 원소에서 시작하면 이동하지 않습니다.

이때 점수는 52\frac{5}{2}이며, 998244353으로 나눈 나머지는 499122179입니다.

예제2

  1. 예제 1

    입력
    3
    3 1 2
    
    예상 출력
    3 2 499122179
    
  2. 예제 2

    입력
    6
    6 1 2 5 3 4
    
    예상 출력
    6 499122180 4 499122182 5 582309211