U116552 快速排序
题目描述
下面是快速排序模板(错的)
```cpp
bool cmp(int a, int b) {
return a < b;
}
void swap(int& a, int& b) {
int t = a;
a = b;
b = t;
}
void sort(int* a, int l, int r) {
if (r-l < 2) return;
swap(a[l], a[(l+r)/2]);
int p = l+1;
for (int i = l+1; i < r; i++)
if (cmp(a[i], a[l]))
swap(a[i], a[p++]);
swap(a[l], a[p-1]);
sort(a, l, p-1);
sort(a, p, r);
}
int main() {
// input n and a
sort(a, 0, n);
// output a
}
```
现在要求 $[1,n]$ 这 $n$ 个整数的一个排列 $a$,使得对数组 $a$ 执行上面的代码,`cmp` 函数的执行次数最多。
**如存在多组满足要求的数据,输出字典序最小的一组。**
输入格式
一个整数 $n$。
输出格式
一行 $n$ 个数表示数组 $a$。
说明/提示
#### 数据范围
数据点1,$n\le 10$
数据点2,$n\le 100$
数据点3,$n\le 2\times 10^4$
数据点4,$n\le 2\times 10^5$
数据点5,$n\le 10^6$