#SFJSJJZN0X04D2. Innovative Business(创新商业/特殊排序)

    ID: 1017 传统题 1000ms 64MiB 尝试: 7 已通过: 1 难度: 4 上传者: 标签>来源算法竞赛进阶指南基础算法二分(SPJ-交互)4

Innovative Business(创新商业/特殊排序)

题目描述

NN 个元素,编号 1,2..N1,2..N,每一对元素之间的大小关系是确定的,关系具有反对称性,但不具有传递性。

注意:不存在两个元素大小相等的情况。

也就是说,元素的大小关系是 NN 个点与 N×(N1)2 \dfrac {N×(N−1)} {2} 条有向边构成的任意有向图。

然而,这是一道交互式试题,这些关系不能一次性得知,你必须通过不超过 1000010000 次提问来获取信息,每次提问只能了解某两个元素之间的关系。

现在请你把这 NN 个元素排成一行,使得每个元素都小于右边与它相邻的元素。

你可以通过我们预设的 bool 函数 compare 来获得两个元素之间的大小关系。

例如,编号为 aabb 的两个元素,如果元素 aa 小于元素 bb ,则 compare(a,b)compare(a,b) 返回 truetrue,否则返回 falsefalse

NN 个元素排好序后,把他们的编号以数组的形式输出,如果答案不唯一,则输出任意一个均可。

数据范围

1N10001≤N≤1000

输入样例

[[0, 1, 0], [0, 0, 0], [1, 1, 0]]

输出样例

[3, 1, 2]

提交样例

#include "plus.h"
std::vector <int> specialSort(int N)
{
    std::vector<int> a;
    /* 你要实现的地方 */

    return a;
}

Limitation

1s, 64MiB for each test case.

source

acwing115