# 快速排序的败北 ## 题目背景 小C写出如下快速排序程序: ```cpp int n, a[1005]; int cnt = 0; int partition(int l, int r) { cnt += r-l+1; swap(a[l], a[(l+r)/2]); int i = l+1, j = r, x = a[l]; while(1){ while(a[i]x && j>=l+1) j--; if(i>=j) break; swap(a[i],a[j]); i++;j--; } swap(a[l],a[j]); return j; } void qsort(int l, int r){ if(l >= r) return; int m = partition(l,r);//分 qsort(l,m-1);//解 qsort(m+1,r); } int main(){ n = 1000; for(int i=1;i<=n;i++) cin>>a[i]; qsort(1,n); return 0; } ``` ## 题目描述 你做为出题人,想要让小C的快排程序复杂度退化为 $O(n^2)$。 给定整数 $k$,请你构造一组 $n=1000$ 的数据,使得小C的程序运行结束时,计数器 `cnt` 的值超过 $k$。 请认真阅读【评分方式】 ## 输入格式 输入1个整数 $k$,代表 `cnt` 要超过的值 ## 输出格式 输出一行包含 $n=1000$ 个 `int` 范围整数 ## 提示 ### 评分方式 共10个测试点,每个测试点10分。 - 若输入不合法(数字个数少于或者多于 $1000$,格式不对),得 $0$ 分; - 否则 `checker` 会执行小C的快排程序并计算 `cnt` 的值,若最终 $cnt>k$ 则得10分、否则得0分。 对于第 $i$ 个测试点,$k=400\times 2^i$。