만드는 중입니다

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

반평면

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

요약
각 질의는 직선 ax+by=c보다 아래에 있는 점들의 값을 더합니다. 그다음 그 점들의 값에 3x3 행렬을 곱해 갱신합니다.
난이도

어려움10점 중 9점

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

문제

평면 위에 nn개의 점이 있다. ii번째 점 (xi,yi)(x_i, y_i)의 값은 di∈D\mathbf{d}_i \in D이다. 집합 DD는 Fp\mathbb{F}_p 위의 모든 3×13 \times 1 행렬이고, 집합 OO는 Fp\mathbb{F}_p 위의 모든 3×33 \times 3 행렬이며, p=109+7p = 10^9+7이다. ++는 행렬 덧셈으로, 두 종류의 곱은 pp를 법으로 한 행렬 곱으로 계산한다.

εD\varepsilon_D는 DD의 영원소이고, εO\varepsilon_O는 OO의 항등원이다. DD의 덧셈은 교환법칙과 결합법칙을 만족하며 εD\varepsilon_D가 항등원이다. OO와 DD의 곱은 OO의 곱과 호환되고 DD의 덧셈에 대해 분배법칙을 만족한다. OO의 곱은 결합법칙을 만족하며 εO\varepsilon_O가 항등원이다. 풀이에서는 이 성질만 사용한다.

mm개의 질의가 주어진다. 각 질의는 aa, bb, cc와 3×33 \times 3 행렬 o\mathbf{o}로 이루어진다. 질의마다 s=εD\mathbf{s} = \varepsilon_D로 둔다. axi+byi<cax_i + by_i < c를 만족하는 모든 점 ii에 대해 s\mathbf{s}를 s+di\mathbf{s} + \mathbf{d}_i로 바꾸고, 이어서 di\mathbf{d}_i를 o⋅di\mathbf{o} \cdot \mathbf{d}_i로 바꾼다. 마지막 s\mathbf{s}가 질의의 답이다. 질의는 입력 순서대로 수행하며, 바뀐 di\mathbf{d}_i는 이후 질의에도 그대로 남는다.

입력

첫 줄에 nn (1≤n≤3⋅1051 \le n \le 3 \cdot 10^5)이 주어진다. 이어지는 nn개의 줄에는 정수 다섯 개 xi,yi,di0,di1,di2x_i, y_i, d_{i0}, d_{i1}, d_{i2}가 주어진다. 단, ∣xi∣,∣yi∣≤106|x_i|, |y_i| \le 10^6이다.

다음 줄에는 mm (1≤m≤1.5⋅1041 \le m \le 1.5 \cdot 10^4)이 주어진다. 이어지는 mm개의 줄에는 정수 열두 개 a,b,c,o00,o01,o02,o10,…,o22a, b, c, o_{00}, o_{01}, o_{02}, o_{10}, \ldots, o_{22}가 주어진다. 단, ∣a∣,∣b∣≤103|a|, |b| \le 10^3, b≠0b \ne 0, ∣c∣≤106|c| \le 10^6이며, 행렬의 모든 원소는 00 이상 109+610^9+6 이하이다.

모든 질의 ii와 점 jj에 대해 aixj+biyj≠cia_i x_j + b_i y_j \ne c_i이다. 서로 다른 두 질의 ii, jj에 대해 (ai/bi,ci/bi)(a_i/b_i, c_i/b_i)와 (aj/bj,cj/bj)(a_j/b_j, c_j/b_j)는 서로 다르다.

출력

각 질의마다 s\mathbf{s}의 성분 s0s_0, s1s_1, s2s_2를 공백으로 구분해 한 줄에 출력한다.

힌트

풀이는 문제에 나온 성질 이외의 행렬 연산 성질에 의존하지 않는다. 행렬은 이 문제를 채점기로 시험할 수 있도록 하기 위해서만 사용되었다.

예제1

  1. 예제 1

    입력
    5
    1 1 2 3 4
    12 12 4 6 1
    1 12 5 1 2
    12 1 1 5 5
    6 6 2 0 3
    3
    1 1 4 1 1 2 3 4 5 2 3 4
    1 1 400 1 3 4 2 1 2 3 4 5
    -1 -1 -10 3 2 1 4 6 5 4 3 2
    
    예상 출력
    2 3 4
    25 50 40
    92 58 139