#arc035d. [arc035_d]高橋くんとマラソンコース

[arc035_d]高橋くんとマラソンコース

问题文

高桥君是马拉松比赛的主办者,他正在制定下一届马拉松比赛的计划。他所在的城市有东西和南北两个方向各有 10610^6 条道路,在南北方向上,从西边延伸的第 xx 条道路和在东西方向上,从南边延伸的第 yy 条道路交叉的交叉点表示为 (x,y)(x,y)

为了简化马拉松赛道的建设,道路只能往东或往北走。高桥君确定了 NN 个检查点 (pi,qi)(p_i,q_i) 作为参与者计时的位置。

在高桥君的城市中,由于参与者希望每个人都选择不同的路径参加马拉松比赛,因此不同路径的数量很重要。根据计时需求,当设置了从检查点 uu 到检查点 v(u<v)v (u < v) 的马拉松赛道时,参与者必须经过所有满足 uivu≦i≦v 的检查点 ii

因此,高桥君需要回答以下 QQ 个查询:

  1. 将第 kjk_j 个检查点的位置更改为 (aj,bj)(a_j,b_j)
  2. 判断从检查点 l1jl_{1j} 到检查点 r1jr_{1j} 的不同路径总数和从检查点 l2jl_{2j} 到检查点 r2jr_{2j} 的不同路径总数哪个更大。 注意,保证路径数量较多的一方至少是路径数量较少的一方的两倍以上。

请编写一个程序来帮助高桥君。


输入

输入以以下格式从标准输入中给出。

NN p1p_1 q1q_1 p2p_2 q2q_2 : pNp_N qNq_N QQ t1t_1 : tQt_Q

  • 11行为表示检查点数量的整数 N(2N2\*105)N (2 ≦ N ≦ 2\*10^5)
  • 接下来的NN行,每行表示检查点的位置的整数 pi,qi(1pi,qi106)p_i,q_i(1 ≦ p_i, q_i ≦ 10^6),以空格分隔。
  • N+2N+2行为表示查询数量的整数 Q(1Q2\*105)Q(1 ≦ Q ≦ 2\*10^5)
  • N+3N+3行到第N+2+QN+2+Q行,每行表示一个查询。tjt_j 表示第jj个查询的类型。
  • tj=1t_j = 1 时,该行有三个整数 kj,aj,bj(1kjN,1aj,bj106)k_j, a_j, b_j(1 ≦ k_j ≦ N, 1 ≦ a_j, b_j ≦ 10^6),以空格分隔。
  • tj=2t_j = 2 时,该行有四个整数 $l_{1j}, r_{1j}, l_{2j}, r_{2j} (1 ≦ l_{1j} < r_{1j} ≦ N, 1 ≦ l_{2j} < r_{2j} ≦ N )$,以空格分隔。
  • 对于任意 i(1iN1)i(1 ≦ i ≦ N-1),确保从检查点 ii 到检查点 i+1i+1 的路径始终存在一条(即使通过查询改变了检查点的位置)。并且,检查点的位置不会重叠。

部分分

此问题有部分得分。

  • 在30个测试案例中,满足 2N1,000,1Q1,0002≦N≦1,000, 1≦Q≦1,000

输出

对于类型为 22 的查询,按给定的查询顺序逐行输出答案。如果从检查点 l1jl_{1j} 到 检查点 r1jr_{1j} 的路径较多,则输出 FIRST;如果从检查点 l2jl_{2j} 到检查点 r2jr_{2j} 的路径较多,则输出 SECOND

不要忘记输出末尾的换行符。


输入示例1


4
1 1
2 5
4 5
5 6
4
2 1 3 3 4
2 1 3 1 4
1 2 2 2
2 2 3 3 4

输出示例1


FIRST
SECOND
FIRST

对于第 11 个查询,从检查点11 到检查点33 的路径数为 55

从检查点 33 到检查点 44 的路径数为 22

因此,输出 FIRST

对于第 22 个查询,路径数分别为 551010,所以输出 SECOND

对于第 33 个查询,改变了检查点 22 的位置后,再进行第 44 个查询,路径数分别为 101022,所以输出 FIRST


输入示例2


4
1 1
100 100
101 102
199 199
3
2 1 2 2 3
2 1 2 2 4
2 1 2 3 4

输出示例2


FIRST
FIRST
FIRST

请注意,比较的数量可能非常大。