atcoder#ABC244H. [ABC244Ex] Linear Maximization

[ABC244Ex] Linear Maximization

配点 : 600600

問題文

22 次元平面上の点の集合 SS があります。SS ははじめ空です。

i=1,2,,Qi = 1, 2, \dots, Q の順に、以下のクエリを処理してください。

  • 整数 Xi,Yi,Ai,BiX_i, Y_i, A_i, B_i が与えられる。SS に点 (Xi,Yi)(X_i, Y_i) を追加した後、$\displaystyle \max_{(x,y) \in S}\left\{A_ix + B_iy\right\}$ を求める。

制約

  • 入力は全て整数
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • Xi,Yi,Ai,Bi109|X_i|, |Y_i|, |A_i|, |B_i| \leq 10^9
  • iji \neq j ならば (Xi,Yi)(Xj,Yj)(X_i, Y_i) \neq (X_j, Y_j)

入力

入力は以下の形式で標準入力から与えられる。

QQ

X1X_1 Y1Y_1 A1A_1 B1B_1

X2X_2 Y2Y_2 A2A_2 B2B_2

\vdots

XQX_Q YQY_Q AQA_Q BQB_Q

出力

QQ 行出力せよ。ii 行目には、ii 個目のクエリに対する答えを出力せよ。

4
1 0 -1 -1
0 1 2 0
-1 0 1 1
0 -1 1 -2
-1
2
1
2
  • i=1i = 1 のとき : SS に点 (1,0)(1, 0) を追加し、S={(1,0)}S = \{(1, 0)\} とします。(x,y)=(1,0)(x, y) = (1, 0) のとき xy=1-x - y = -1 となり、これが最大値を取ります。
  • i=2i = 2 のとき : SS に点 (0,1)(0, 1) を追加し、S={(0,1),(1,0)}S = \{(0, 1), (1, 0)\} とします。(x,y)=(1,0)(x, y) = (1, 0) のとき 2x=22x = 2 となり、これが最大値を取ります。
  • i=3i = 3 のとき : SS に点 (1,0)(-1, 0) を追加し、S={(1,0),(0,1),(1,0)}S = \{(-1, 0), (0, 1), (1, 0)\} とします。(x,y)=(1,0)(x, y) = (1, 0) または (x,y)=(0,1)(x, y) = (0, 1) のとき x+y=1x + y = 1 となり、これが最大値を取ります。
  • i=4i = 4 のとき : SS に点 (0,1)(0, -1) を追加し、S={(1,0),(0,1),(0,1),(1,0)}S = \{(-1, 0), (0, -1), (0, 1), (1, 0)\} とします。(x,y)=(0,1)(x, y) = (0, -1) のとき x2y=2x - 2y = 2 となり、これが最大値を取ります。
9
-1 4 -8 -2
9 -9 -7 7
4 1 6 7
-4 -1 -4 -5
-9 3 -2 -6
-1 0 -8 5
-8 -5 0 0
8 3 0 -4
2 -5 2 5
0
35
31
21
36
87
0
36
31