QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 512 MB 總分: 100 通信

#4831. 急切排序

统计

Petya 是一个排序机器人。他的内存中有一个长度为 $n$($1$ 到 $100$)的数组,其元素是两两不同的整数。数组中的位置从左到右编号为 $1$ 到 $n$。

Nina 是一名机器人操作员。Nina 想要对这个数组进行排序:使得对于任意两个不同的位置,左侧的数字小于右侧的数字。唯一可用的命令是比较两个位置 $i$ 和 $j$ 上的元素。如果左侧位置(可以是位置 $i$ 或 $j$)上的元素大于右侧位置上的元素,Petya 会交换它们并在屏幕上显示数字 $1$。否则,Petya 不会对数组做任何操作,仅在屏幕上显示数字 $0$。

不幸的是,Petya 的电源系统损坏了,因此机器人有时会关机。具体表现为:当收到命令时,Petya 不会执行它,而是在屏幕上显示 $-1$,然后忽略后续的所有命令。

为了让 Petya 再次工作,Nina 会将他拆解并重新组装。数组不会改变。不幸的是,在维修过程中,Nina 忘记了她已经向机器人发出了哪些命令。此后,Petya 会在电池耗尽前一直工作,然后再次关机。

电池有足够的电量供 Petya 执行 $1500$ 条命令。Petya 会关机两次:在执行第 $x$ 条命令后和执行第 $1500$ 条命令后($0 < x < 1500$,值 $x$ 对 Nina 是未知的)。了解以上所有信息后,请帮助 Nina 使得在 Petya 第二次关机后,他内存中的数组是有序的。

交互

在本题中,你的程序在每个测试点上会被运行两次。你的程序代表 Nina,评测程序代表 Petya。每一行输入都以换行符结束。

这是一个交互式问题。请记住在打印每条命令后立即刷新输出!下面描述了你的程序与评测程序之间的交互过程:在两次运行中该过程相同。

输入的第一行包含一个整数 $n$,即数组的大小($1 \le n \le 100$)。此后,你的程序发出命令,评测程序执行它们并打印答案。

要发出“比较位置 $i$ 和 $j$ 上的元素”的命令,请打印一行格式为 “$i$ $j$” 的内容,其中 $1 \le i, j \le n$。结果,你将得到一行包含单个整数的输出: $1$ 表示 Petya 交换了位置 $i$ 和 $j$ 上的元素,因为左侧元素大于右侧元素; $0$ 表示 Petya 没有做任何改变,因为左侧元素不大于右侧元素(即左侧元素小于右侧元素,或者 $i = j$); * $-1$ 表示 Petya 在执行命令前关机了。

在最后一种情况下,程序必须终止。在其他情况下,可以继续发出下一条命令。

如果你想在 Petya 关机前终止交互,请打印一行 “-1 -1” 而不是命令。此后,程序必须终止。

在每个测试中,第一次运行前的数组是预先固定的,第二次运行前的数组处于第一次运行结束时的状态。此外,在每个测试中,Petya 第一次关机时的命令数 $x$($0 < x < 1500$)也是预先固定的。在第二次运行期间,即使第一次运行的交互在第一次关机前结束,机器人也会在 $1500 - x$ 条命令后关机。

样例

输入 1

5
1
1
0
1
1
0
1
0
-1

输出 1

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

输入 2

5
1
0
0

输出 2

1 2
2 3
1 2
-1 -1

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.