만드는 중입니다

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

Bruteforce

시간 제한5초메모리 제한512 MB

요약
배열의 원소 하나를 바꾸는 질의마다, 정렬된 값 b_i에 대해 floor(b_i * i^k / w)의 합을 998244353으로 나눈 나머지를 구한다. 이때 k와 w는 5 이하다.
난이도

보통10점 중 6점

유형
정렬, 완전 탐색, 구현, 수학
정답자
아직 제출이 없습니다

문제

고정된 정수 kk와 ww가 주어진다.

길이 nn인 배열 aa의 가중치를 다음과 같이 정의한다.

  • bb를 aa를 오름차순으로 정렬한 배열이라 하자.
  • aa의 가중치는 ∑i=1n⌊bi⋅ikw⌋\displaystyle \sum_{i=1}^{n} \left\lfloor{\frac{b_i \cdot i^k}{w}}\right\rfloor로 정의된다.

여기서 ⌊x⌋\left\lfloor x \right\rfloor는 xx를 넘지 않는 가장 큰 정수이다.

예를 들어 k=2k = 2이고 w=3w = 3이면 a=[3,2,2]a = [3, 2, 2]의 가중치는 다음과 같다.

⌊2⋅123⌋+⌊2⋅223⌋+⌊3⋅323⌋=0+2+9=11\displaystyle \left\lfloor {\frac{2 \cdot 1^2}{3}} \right\rfloor + \left\lfloor {\frac{2 \cdot 2^2}{3}} \right\rfloor + \left\lfloor {\frac{3 \cdot 3^2}{3}} \right\rfloor = 0 + 2 + 9 = 11.

초기 배열 aa가 주어지고, qq개의 질의가 주어진다. 각 질의는 배열 aa의 원소 하나를 바꾼다. 각 질의가 끝난 뒤 배열의 새 가중치를 출력해야 한다. 배열의 가중치는 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

변경 사항은 질의 사이에도 유지된다. 예를 들어 두 번째 질의는 첫 번째 질의로 이미 바뀐 배열에 적용된다.

입력

첫째 줄에 세 정수 nn, kk, ww가 주어진다 (1≤n≤1051 \le n \le 10^5, 1≤k≤51 \le k \le 5, 1≤w≤51 \le w \le 5). 이는 배열의 길이와 문제에서 설명한 매개변수이다.

둘째 줄에 nn개의 정수 aia_i가 주어진다 (0≤ai≤1050 \le a_i \le 10^5). 이는 초기 배열의 원소이다.

셋째 줄에 정수 qq가 주어진다 (1≤q≤1051 \le q \le 10^5). 이는 질의의 수이다.

다음 qq개 줄에 각각 두 정수 pos\mathit{pos}와 xx가 주어진다 (1≤pos≤n1 \le \mathit{pos} \le n, 0≤x≤1050 \le x \le 10^5). 이는 aposa_{\mathit{pos}}를 xx로 바꾸는 질의를 나타낸다.

출력

각 변경 후 배열의 가중치를 998 244 353998\,244\,353으로 나눈 나머지를 qq개 출력한다.

예제2

  1. 예제 1

    입력
    3 1 1
    2 2 8
    2
    2 5
    3 6
    
    예상 출력
    36
    30
    
  2. 예제 2

    입력
    4 2 2
    1 3 3 7
    4
    1 1
    2 4
    3 8
    4 8
    
    예상 출력
    75
    80
    103
    108