气泡排序

时间限制: 1000 ms 内存限制: 131072 kb
总通过人数: 0 总提交人数: 0

题目描述

众所周知,气泡排序是一个 $\Theta(n^2)$ 的算法,它的速度非常慢。小 W 现在需要对一个序列 $A$ 排序,菜菜的小 W 只会气泡排序,但是他的破旧的 ryzen 1700 8 核 cpu 并不能在有生之年跑完整个程序。于是小 W 决定只跑气泡排序的前 $k$ 轮。

他用下面这份修改过的气泡排序代码来代替原程序,现在假设你就是小 W 的破旧 ryzen 1700 8 核 cpu ,请你告诉他序列 $A$ 经过这个排序之后会变成什么样。

for i from 1 to k do
    for j from 1 to n - 1 do
        if A[j] > A[j + 1] then
            swap(A[j], A[j + 1])

其中 $k$,$n$,$A$ 给定。

输入

第一行一个正整数 $T$,表示数据组数。

每组数据,第一行两个整数 $n,k$ 表示序列的长度和轮数。 接下来 $n$ 行每行一个整数表示 $A_i$

$1\le k\le n\le200000, 1≤A_i≤10^9$

$1\le T\le20,\sum n\le800000$

输出

对于每组数据,输出 $n+1$ 行,第一行格式为 Case #number:,其中 $\mathrm{number}$ 表示这是第 $\mathrm{number}$ 组数据,接下来 $n$ 行,每行一个整数,第 $i$ 行的整数表示气泡排序 $k$ 轮后的 $A_i$。

输入样例

1
3 1
3
2
1

输出样例

Case #1:
2
1
3

相关推荐