#P11115. [ROI 2024] 白菜 (Day 1)

[ROI 2024] 白菜 (Day 1)

Description

你需要收集有关机器人在种植区域工作的统计信息。如果存在一个机器人恰好在网格段 (x1,x2,y)(x_1, x_2, y) 上工作,我们说 (x1,x2)(x_1, x_2) 在行 yy 上被服务。具体地,你需要:

  • 找出所有在某一行中被服务的 (x1,x2)(x_1, x_2) 对。
  • 对于每一对这样的 (x1,x2)(x_1, x_2),找出它被服务的行数。
  • 对于每一对这样的 (x1,x2)(x_1, x_2),找出它被服务的最大连续行数。换句话说,找出最大值 kk,使得存在一个长度为 kk 的连续行区间 [y1,y2][y_1, y_2](其中 y2y1+1=ky_2 - y_1 + 1 = k),使得在任意行 y1yy2y_1 \le y \le y_2 中,该对 (x1,x2)(x_1, x_2) 都被服务。

Input Format

输入包含多组数据。第一行给出一个整数 tt1t2000001 \le t \le 200000),表示测试数据的组数。

每组数据的第一行给出一个整数 nn1n2000001 \le n \le 200000),表示矩形区域的数量。

接下来的 nn 行中,每行包含四个整数 xLix_{L_i}yLiy_{L_i}xRix_{R_i}yRiy_{R_i}1xLixRi1091 \le x_{L_i} \le x_{R_i} \le 10^91yLiyRi1091 \le y_{L_i} \le y_{R_i} \le 10^9),表示一个矩形区域。

NN 表示所有数据集中的 nn 总和,保证 N200000N \le 200000

Output Format

对于每组数据,首先输出一个整数 ppp1p \ge 1),表示在某一行中被服务的 (x1,x2)(x_1, x_2) 对的数量。接下来 pp 行中,每行输出四个整数 x1x_1x2x_2cntcntkk1x1x21091 \le x_1 \le x_2 \le 10^90cnt,k1090 \le cnt, k \le 10^9)。其中,cntcnt 是该对 (x1,x2)(x_1, x_2) 被服务的行数,kk 是它被服务的最大连续行数。

每一对 (x1,x2)(x_1, x_2) 必须是不同的。每一对在某一行中被服务的 (x1,x2)(x_1,x_2) 对,必须输出且只能输出一次。输出顺序可以是任意的。

4
2
2 2 3 3
3 3 4 4
2
2 1 2 3
1 2 3 2
4
2 2 4 5
3 4 9 7
2 9 9 10
7 1 9 7
7
2 1 2 9
5 1 6 8
4 5 7 6
1 8 4 10
1 6 3 6
1 2 7 3
4 1 7 1
3
2 3 1 1
2 4 1 1
3 4 1 1
2
1 3 1 1
2 2 2 1
4
2 4 2 2
2 9 4 2
3 9 2 2
7 9 3 3
6
1 4 2 2
1 6 1 1
1 7 3 2
2 2 4 2
4 7 2 1
5 6 2 1

Hint

在第一组数据中,机器人在以下区段进行服务:(2,3,2)(2, 3, 2)(2,4,3)(2, 4, 3)(3,4,4)(3, 4, 4)。因此,对 (2,3)(2, 3)(2,4)(2, 4)(3,4)(3, 4) 在某一行中得到服务,并且每对都只在一行中被服务。

在第二组数据中,机器人在以下区段进行服务:(2,2,1)(2, 2, 1)(2,4,2)(2, 4, 2)(2,2,3)(2, 2, 3)。因此,对 (2,2)(2, 2)(2,4)(2, 4) 在某一行中得到服务。对 (2,2)(2, 2) 在第 11 行和第 33 行中得到服务,而对 (2,4)(2, 4) 在第 22 行中被服务。

下面是第三和第四组数据的图片。

  • 如果你的程序错误地找出了在某一行中被服务的对 (x1,x2)(x_1, x_2) 的集合,该测试点将获得零分。
  • 如果你的程序:
    • 能够正确找出该集合,但不是所有的 cntcnt 都正确,该测试点将获得 50%50\% 的分数。
    • 能够正确找出该集合和所有 cntcnt,但不是所有的 kk 都正确,该测试点将获得 75%75\% 的分数。
    • 能够正确找出该集合、所有 cntcnt 和所有 kk,该测试点将获得 100%100\% 的分数。

请注意,如果你想获得获得部分分,仍需为每对配对 (x1,x2)(x_1, x_2) 输出一些 cntcntkk 值,但不必全部正确。