만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

증가하는 부분 수열의 개수

면접 대비

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

요약
각 위치 i에 대해 A_i로 끝나는 증가 부분 수열의 개수를 998244353으로 나눈 나머지로 구한다.
난이도

보통10점 중 5점

유형
동적 계획법, 누적 합, 배열, 조합론
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 AA가 주어진다. 각 ii에 대해, AiA_i로 끝나는 증가하는 부분 수열의 개수를 구하자.

답이 매우 커질 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

증가하는 부분 수열이 무엇인지 잘 모르는 사람을 위해 동원이가 아래 정의를 준비했다.

  • 부분 수열이란 주어진 수열에서 1개 이상의 원소를 골라 원래 순서대로 나열하여 얻은 수열을 말한다.
  • 증가하는 부분 수열이란 맨 처음 원소를 제외한 모든 원소가 바로 전 원소보다 큰 수열을 말한다. 다시 말해 길이가 NN인 부분 수열 AA가 있을 때, Ai−1<AiA_{i-1} < A_i (2≤i≤N2 \le i \le N)를 만족하면 AA는 증가하는 부분 수열이다.

동원이는 위 정의에 따라 길이가 1인 부분 수열은 항상 증가하는 부분 수열이라는 점에 주의하라고 덧붙였다.

입력

첫째 줄에 수열의 길이 NN이 주어진다.

둘째 줄에 NN개의 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 NN개의 정수를 출력한다.

ii번째로 출력하는 수는 AiA_i로 끝나는 증가하는 부분 수열의 개수를 998 244 353998\,244\,353으로 나눈 나머지이다.

제한

  • 1≤N≤5 0001 \leq N \leq 5\,000
  • 1≤Ai≤5 0001 \leq A_i \leq 5\,000

예제3

  1. 예제 1

    입력
    5
    1 2 3 4 5
    
    예상 출력
    1 2 4 8 16
    
  2. 예제 2

    입력
    5
    1 1 1 1 1
    
    예상 출력
    1 1 1 1 1
    
  3. 예제 3

    입력
    5
    1 2 2 4 3
    
    예상 출력
    1 2 2 6 6