#LX0044. 猜一猜2【NOIP2024模拟赛T2】

猜一猜2【NOIP2024模拟赛T2】

题目背景

小明觉得好久没出交互题了,所以出一道。

题目描述 1s 512MB

小明有一个长度为nn1,...,n1,...,n的排列aa,但小明只告诉了你nn

你需要通过交互的形式来给这个数组从小到大排序。

评分标准基于你使用的操作个数之和。

交互格式

首先从标准读入读入一个数字nn

接下来开始你的交互:

交互一共有三种操作:

(1)1 x y,询问ax,aya_x,a_y的大小,如果ax<aya_x<a_y交互库会返回00,否则返回11

(2)2 x y,交换ax,aya_x,a_y,这个操作没有任何返回值。

(3)3,表示你已经排好序了,此时需要输出后结束你的程序。

记得在每次输出后使用endl或者cout.flush()来刷新缓冲区。

当你次数超了,或者是你输出了不合理的元素,则会得到re之类的结果。

样例输入 #1

3
1
1
1

样例输出 #1

1 1 2
2 1 2
1 1 3
2 1 3
1 2 3
2 2 3
3

样例解释 #1

这个过程是动态的,交互库的数列其实是[3,2,1][3,2,1]

你读入了n=3n=3,然后问了a1,a2a_1,a_2的大小关系,得到了返回a2a_2更小,所以你交换了a1,a2a_1,a_2。接下来你询问了a1,a3a_1,a_3的大小关系,得到了返回a3a_3更小,所以你交换了a1,a3a_1,a_3。之后你询问了a2,a3a_2,a_3的大小关系,得到了返回a3a_3更小,于是交换了a2,a3a_2,a_3

于是你输出33结束了你的程序。

大样例自测地址

数据范围

以下规定TT为你操作的总次数。

sub 1(25分):1n50,T=50001\leq n\leq 50,T=5000

sub 2(25分):1n1000,T=170001\leq n\leq 1000,T=17000

sub 3(25分):1n1000,T=160001\leq n\leq 1000,T=16000

sub 4(25分):1n1000,T=100001\leq n\leq 1000,T=10000

因为很好自测,所以没有大样例提交地址!(初二考试时候有)