问题3159--邪王真眼是最强的!!!

3159: 邪王真眼是最强的!!!

时间限制: 1 Sec  内存限制: 512 MB  Special Judge
提交: 134  解决: 43
[状态] [讨论版] [提交] [命题人:]
题目描述
给定一个正整数 n (1 <= n <= 1e6),请你构造出一个大小为 n 的排列数组 a , 使数组 a 在经典冒泡排序(将数组从小到大排序)函数(参考下方代码)下得到的交换次数 count 为 k (0 <= k <= n*(n-1)/2).
排列数组定义:数组的大小为 n, 且数组只包含 [1, n] 范围内的元素,并且数组中任意两个元素互不相同,例如:数组 {3, 5, 1, 4, 2} 是一个大小为 5 排列数组, 数组 {3, 1, 4, 3, 2} 不是一个排列数组,因为数组中包含 2 个元素 3 ,不满足数组中任意两个元素互不相同.
如果有多种答案满足要求,输出任意一种即可。
C/C++版本:
long long getBubbleSortSwapCount(int a[], int n) {
    long long count = 0;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                count++;
                int temp = a[j + 1];
                a[j + 1] = a[j];
                a[j] = temp;
            }
        }
    }
    return count;
}

Java版本:
public static long getBubbleSortSwapCount(int[] a, int n) {
    long count = 0;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                count++;
                int temp = a[j + 1];
                a[j + 1] = a[j];
                a[j] = temp;
            }
        }
    }
    return count;
}

Python版本:
def get_bubble_sort_swap_count(a, n):
    count = 0
    for i in range(n - 1):
        for j in range(n - i - 1):
            if a[j] > a[j + 1]:
                count += 1
                a[j], a[j + 1] = a[j + 1], a[j]
    return count

输入
输入两个正整数 n (1 <= n <= 1 <= 1e6), k (0 <= k <=  n*(n-1)/2)
输出
输出一行大小为 n 的排列 a1, a2, a3, ... , an(1 <= ai <= n)
样例输入 Copy
2 1
样例输出 Copy
2 1
提示

样例2

输入

5 9

输出

4 5 3 2 1