만드는 중입니다

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

원뿔 곡선

시간 제한3초메모리 제한256 MB

요약
x좌표가 i인 점들에 대해 한 점 수정, 구간 내 y 반전을 처리하고, 구간의 a*x + b*y + c*x*y 최댓값을 구합니다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 기하, 구현
정답자
아직 제출이 없습니다

문제

Rikka는 다음과 같이 정수 수열 u1,u2,…u_1, u_2, \ldots을 만든다. 먼저 xi=(100000005⋅xi−1+20150609) mod 998244353x_i = (100000005 \cdot x_{i-1} + 20150609) \bmod 998244353으로 x1,x2,…x_1, x_2, \ldots을 구하고, 그다음 ui=⌊xi/100⌋u_i = \lfloor x_i / 100 \rfloor로 둔다.

처음에 좌표평면 위에 nn개의 점이 있다. ii번째 점의 좌표는 (i,ui mod 100001)(i, u_i \bmod 100001)이다. 이후 mm개의 연산을 순서대로 수행한다. ii번째 연산은 C, R, Q 중 하나의 종류를 가진다.

pi=min⁡{un+2i−1 mod n,un+2i mod n}+1p_i = \min\{u_{n+2i-1} \bmod n, u_{n+2i} \bmod n\} + 1, qi=max⁡{un+2i−1 mod n,un+2i mod n}+1q_i = \max\{u_{n+2i-1} \bmod n, u_{n+2i} \bmod n\} + 1로 정의한다.

  • ii번째 연산이 C이면, (un+2i−1 mod n+1)(u_{n+2i-1} \bmod n + 1)번째 점을 (un+2i−1 mod n+1,un+2i mod 100001)(u_{n+2i-1} \bmod n + 1, u_{n+2i} \bmod 100001)로 바꾼다.
  • ii번째 연산이 R이면, pi≤x≤qip_i \le x \le q_i를 만족하는 모든 점 (x,y)(x, y)를 (x,100000−y)(x, 100000 - y)로 바꾼다.
  • ii번째 연산이 Q이면, 현재 존재하는 점 중 pi≤x≤qip_i \le x \le q_i를 만족하는 점들을 대상으로 한다. 주어진 aia_i, bib_i, cic_i에 대해 이 점들의 max⁡{ai⋅x+bi⋅y+ci⋅x⋅y}\max\{a_i \cdot x + b_i \cdot y + c_i \cdot x \cdot y\}를 구한다.

입력

첫 줄에 정수 nn, mm, x0x_0이 주어진다(1≤n≤1051 \le n \le 10^5, 1≤m≤1061 \le m \le 10^6, 0≤x0<9982443530 \le x_0 < 998244353, x0≠340787122x_0 \neq 340787122).

이어지는 mm개의 줄은 연산의 종류를 나타내는 문자 tit_i로 시작하며, C, R, Q 중 하나이다. tit_i가 Q이면 정수 aia_i, bib_i, cic_i가 뒤따른다(0≤ai,bi<1060 \le a_i, b_i < 10^6, 0≤ci<400 \le c_i < 40).

Q 연산의 개수는 10510^5을 넘지 않는다고 보장된다.

출력

Q 연산마다 최댓값을 한 줄에 출력한다.

힌트

처음에 세 점은 (1,91263)(1, 91263), (2,33372)(2, 33372), (3,10601)(3, 10601)에 있다. 첫 번째 연산은 세 번째 점을 (3,94317)(3, 94317)로 바꾼다.

예제1

  1. 예제 1

    입력
    3 3 2705443
    C
    R
    Q 872784 195599 7
    
    예상 출력
    13035048532