QOJ.ac

QOJ

実行時間制限: 8 s メモリ制限: 512 MB 満点: 100

#10613. 栅栏

統計

Bajtazar 的王国由 $n$ 颗行星组成。王国中引入了三维直角坐标系。为了简化,我们可以将每颗行星表示为该坐标系中的一个点。坐标系的设计使得每颗行星的坐标均为非负整数。没有两颗行星位于同一个点上。

Bajtazar 希望将大约 $k$ 颗行星的管理权移交给他的女儿 Bajtynia。Bajtazar 将用一个长方体围栏将选定的行星围起来,围栏的各个面必须垂直于坐标轴。如果 Bajtazar 能用围栏围住 $k$ 到 $\lceil \frac{3}{2}k \rceil$ 颗行星,他就会感到满意。(如果 $x$ 是实数,则 $\lceil x \rceil$ 表示不小于 $x$ 的最小整数。)位于围栏边界上的行星也计入结果。代表围栏的长方体边长可以为 0。请帮助 Bajtazar 确定围栏的合适位置,或者指出无法按此要求规划围栏。

输入格式

输入的第一行包含一个正整数 $t$,表示需要考虑的测试用例数量。

每个测试用例的第一行包含两个正整数 $n_i$ 和 $k_i$ ($2 \le k_i < n_i$),分别表示王国中的行星数量以及 Bajtazar 希望围住的行星数量限制。接下来的 $n_i$ 行中,第 $j$ 行包含三个整数 $x_{i,j}, y_{i,j}, z_{i,j}$ ($0 \le x_{i,j}, y_{i,j}, z_{i,j} \le 10^9$),表示 Bajtazar 第 $j$ 颗行星的坐标。

输出格式

你的程序应输出 $t$ 行,包含各测试用例的答案。如果第 $i$ 个测试用例中可以画出一个面垂直于坐标轴的长方体围栏,且其中包含 $k_i$ 到 $\lceil \frac{3}{2}k_i \rceil$ 颗行星(包含边界),则第 $i$ 行应输出六个整数 $x'_i, y'_i, z'_i, x''_i, y''_i, z''_i$ ($0 \le x'_i, y'_i, z'_i, x''_i, y''_i, z''_i \le 10^9, x'_i \le x''_i, y'_i \le y''_i, z'_i \le z''_i$),表示所求围栏为 $[x'_i, x''_i] \times [y'_i, y''_i] \times [z'_i, z''_i]$。

如果第 $i$ 个测试用例中无法按照 Bajtazar 的要求画出围栏,则第 $i$ 行应输出一个数字 $-1$。如果存在多个可能的答案,你可以输出其中任意一个。

子任务

测试集分为以下子任务。每个子任务的测试由一个或多个独立的测试组组成。设 $N$ 为给定测试中 $n_1 + n_2 + \dots + n_t$ 的总和。

在每个子任务中,都有一组测试占 50% 的分数,其中所有行星的 $z$ 坐标均为 0。

如果你的程序在某个测试中输出的围栏包含超过 $\lceil \frac{3}{2}k_i \rceil$ 颗行星,但在该测试的所有测试用例中输出的围栏均包含 $k_i$ 到 $3k_i$ 颗行星,则该测试将获得 25% 的分数。

子任务 数据范围 分数
1 $t \le 50\,000, n_i \le 10$ 16
2 $t \le 50, N \le 200$ 16
3 $t \le 50, N \le 5000$ 32
4 $t \le 50, N \le 500\,000$ 36

样例

输入 1

4
4 3
1 2 1
0 0 2
3 3 3
2 1 0
5 3
3 0 0
3 2 0
3 3 0
3 5 0
3 6 0
7 6
6 0 0
6 1 0
6 2 0
6 3 0
7 0 0
7 1 0
7 3 0
10 7
0 0 0
0 0 2
0 2 0
0 2 2
1 1 1
2 0 0
2 0 2
2 2 0
2 2 2
3 1 1

输出 1

0 0 0 2 2 2
3 2 0 3 6 0
6 0 0 7 3 0
0 0 0 2 2 2

说明

  • 在第一个用例中,围栏恰好包含 $k_1 = 3$ 颗行星。
  • 在第二个用例中,围栏包含 4 颗行星,尽管也可以提出一个包含 $k_2 = 3$ 颗行星的围栏。题目要求仅为不超过 $\lceil \frac{9}{2} \rceil = 5$ 颗行星。该围栏呈线段形状。
  • 在第三个用例中,围栏包含全部 7 颗行星。题目要求不超过 $\lceil \frac{3}{2}k_3 \rceil = 9$ 颗行星。该围栏呈矩形形状。
  • 在第四个用例中,围栏包含 9 颗行星。题目要求不超过 $\lceil \frac{3}{2}k_4 \rceil = 11$ 颗行星。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.