排序
排序
zzq近日发明了一种最新的排序算法 FastSort\text{FastSort}FastSort,它的伪代码大致如下:
当然,这个伪代码里的 cntcntcnt 对排序来说没什么用,它只是用来指示这个算法的运行效果的。
zzq很喜欢这个算法,于是他打算用它来给一个 1,2…n1,2 \ldots n1,2…n 的排列 aaa 排序。为了清楚地获取算法的运行过程,zzq决定在每次 cntcntcnt 改变时记录下当前的 cntcntcnt 和 aaa 便于分析。
zzq运行了这个算法之后就睡觉去了。第二天早上,zzq发现昨天停电了,日志里只剩下了记录下的最后一个 cnt 和 a。zzq不想再运行一遍算法了,于是他想让你确认一下记录是否正确。
一句话题意:对给定的 1,2…n1,2 \ldots n1,2…n 的排列 aaa 执行算法 FastSort,问当 cnt 刚刚变成输入中给定的值时的 a 序列。
输入格式
第一行两个整数,nnn 和 cntcntcnt。
第二行 nnn 个整数,表示 a1,a2…ana_1,a_2 \ldots a_na1,a2…an。保证是一个 1,2…n1,2 \ldots n1,2…n 的排列。
输出格式
一行 nnn 个整数,表示 cntcntcnt 恰好变成给定值时的 aaa 序列。
样例
样例输入1
5 3
4 3 2 5 1
样例输出1
2 4 3 5 1
样例输入2
9 16
1 9 8 2 3 7 5 4 6
样例输出2
1 2 8 9 3 7 5 4 6
数据范围与提示
对于所有数据,2≤n≤106,1≤cnt≤n(n−1)22 \leq n \leq 10^6,1 \leq cnt \leq \frac{n(n-1)}{2}2≤n≤106,1≤cnt≤2n(n−1)。\par
Subtask 1(10pts):cnt≤107cnt \leq 10^7cnt≤107。
Subtask 2(10pts):ai=n+1−ia_i=n+1-iai=n+1−i。
Subtask 3(20pts):数据生成方式为,先选定 n≤100000n \leq 100000n≤100000 和 cntcntcnt,并初始化 ai=ia_i=iai=i(∀i∈[1,n]\forall i \in [1,n]∀i∈[1,n]),然后重复 101010 次,每次在 [1,n][1,n][1,n] 中独立均匀随机两个不同的整数 iii 和 jjj,并交换 aia_iai 和 aja_jaj。
Subtask 4(20pts):n≤50000n \leq 50000n≤50000。
Subtask 5(20pts):n≤200000n \leq 200000n≤200000。
Subtask 6(20pts):无特殊限制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?