编程题
### 问题描述 城市图书馆决定对其藏书进行重新分类。他们决定使用希尔排序作为其分类方法的基础,但是有一些特殊的要求。 图书馆的每本书都有一个独特的 ID,范围为 $1$ 到 $N$。每本书还有一个权重值,表示其在库中的重要性。图书馆希望按照权重对书进行排序,但是他们希望保留希尔排序的某些特性。 他们的要求如下: 1. 使用希尔排序的增量序列:$\left\lfloor \frac{N}{2} \right\rfloor, \left\lfloor \frac{N}{4} \right\rfloor, ..., 1$。 2. 当两本书的权重相同时,书籍 ID 较小的书应该出现在前面。 你的任务是根据这些要求,为图书馆排序其藏书。 ### 输入格式 第一行:一个整数 $N$,表示图书的数量。 接下来的 $N$ 行:每行两个整数,分别是书籍的 ID 和权重,题目保证每本书的 ID 都是唯一的。 ### 输出格式 输出 $N$ 行,每行一个整数,按权重排序后的书籍 ID。 ### 样例输入 ``` 5 1 10 2 20 3 20 4 15 5 10 ``` ### 样例输出 ``` 1 5 4 2 3 ``` ### 样例说明 在此示例中,两本权重为 $10$ 的书首先被排序,ID 较小的书在前。接下来是权重为 $15$ 的书,然后是两本权重为 $20$ 的书,其中 ID 较小的书在前。 ### 测评数据规模 $1 \leq N \leq 10^5$,书籍的权重范围为 $[1,10^9]$。
查看答案
赣ICP备20007335号-2