#P13024. [GCJ 2021 Qualification] Median Sort

    ID: 12838 远端评测题 40000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2021三分交互题Special JudgeGoogle Code Jam

[GCJ 2021 Qualification] Median Sort

Description

你需要对 N\mathbf{N} 个互不相同的元素 x1x_1, x2x_2, \ldots, xNx_{\mathbf{N}} 进行排序。但遗憾的是,你无法直接比较任意两个元素。你只能通过一种方式:给定三个元素,找出其中的中位数(即既不是最小值也不是最大值的那个元素)。

例如,假设 N=5\mathbf{N} = 5,并且你知道:

  • x1x_1{x1,x2,x3}\{x_1, x_2, x_3\} 的中位数
  • x2x_2{x2,x3,x4}\{x_2, x_3, x_4\} 的中位数
  • x3x_3{x3,x4,x5}\{x_3, x_4, x_5\} 的中位数

那么可以确定,元素的排序结果要么是 x4,x2,x1,x3,x5x_4, x_2, x_1, x_3, x_5,要么是其逆序 x5,x3,x1,x2,x4x_5, x_3, x_1, x_2, x_4。注意,仅通过中位数信息无法区分一个列表与其逆序,因为对于任意三个元素,中位数的结果在这两种情况下是相同的。

你的程序需要在最多 Q\mathbf{Q} 次中位数询问的总次数内(平均每个列表 Q/T\mathbf{Q}/\mathbf{T} 次询问),找出 T\mathbf{T}N\mathbf{N} 元素列表的顺序。对于每个测试用例,只要给出的顺序是正确的或其逆序,都被认为是正确答案。每个测试用例的顺序是从所有可能顺序中均匀随机生成的,且与其他信息无关。

交互协议

这是一个交互式问题。

初始时,评测机将发送一行包含三个整数 T\mathbf{T}N\mathbf{N}Q\mathbf{Q}:分别表示测试用例的数量、每个测试用例中需要排序的元素数量,以及允许在所有测试用例中进行的总询问次数。然后,你需要处理 T\mathbf{T} 个测试用例。每个测试用例包含一系列询问交互以及一个额外的回答交互。

对于询问交互,你的程序需要输出一行包含三个介于 1 和 N\mathbf{N} 之间的不同整数 iijjkk,表示询问评测机"集合 {xi,xj,xk}\{x_i, x_j, x_k\} 的中位数是哪个元素?"。评测机将回复一个整数 L\mathbf{L},表示该集合的中位数是 xLx_{\mathbf{L}}L\mathbf{L} 总是等于 iijjkk 之一)。如果你尝试进行第 (Q+1)(\mathbf{Q} + 1) 次询问,评测机将输出 -1。

当你准备好提交结果时,输出一行包含 N\mathbf{N} 个整数,表示元素按升序或降序排列的索引。评测机将回复一个整数 1 表示答案正确,或 -1 表示错误。在接收到第 T\mathbf{T} 个测试用例的评测结果后,你的程序必须及时结束以避免超时错误。此外,如果在接收到第 T\mathbf{T} 个测试用例的结果后继续输出,将被判为错误答案。

如果评测机在任何时候接收到格式错误或无效的值,它将输出 -1。在输出 -1 后,评测机将不再输出任何内容。如果你的程序在接收到 -1 后继续等待评测机输出,将会因超时而收到 Time Limit Exceeded 错误。注意,确保程序及时退出以避免超时错误是你的责任。如果内存超出限制或程序运行时出错,将收到相应的判定结果。

Input Format

参见交互协议。

Output Format

参见交互协议。

2 5 600

2

3

4

1

3

4

5

1

1 2 3

4 2 3

5 4 3

5 4 3 2 1

1 2 3

2 3 4

3 4 5

1 3 5 4 2

Hint

你可以使用此测试工具在本地或我们的平台上进行测试。要在本地测试,你需要同时运行工具和你的代码;可以使用我们的交互式运行器。更多信息请参阅该文件注释中的说明,并查看 FAQ 的交互式问题部分。

测试工具的说明包含在工具的注释中。我们建议你添加自己的测试用例。请注意,尽管测试工具旨在模拟评测系统,但它并非真实的评测系统,行为可能有所不同。

数据范围

  • T=100\mathbf{T} = 100

测试集 1(7 分,可见判定结果)

  • N=10\mathbf{N} = 10
  • Q=300T\mathbf{Q} = 300 \cdot \mathbf{T}

测试集 2(11 分,可见判定结果)

  • N=50\mathbf{N} = 50
  • Q=300T\mathbf{Q} = 300 \cdot \mathbf{T}

测试集 3(10 分,隐藏判定结果)

  • N=50\mathbf{N} = 50
  • Q=170T\mathbf{Q} = 170 \cdot \mathbf{T}

翻译由 DeepSeek V3 完成