Permutation p is
an ordered set of integers p1,??p2,??...,??pn,
consisting of n distinct positive integers, each of them doesn‘t exceed n.
We‘ll denote the i-th element of permutation p as pi.
We‘ll call number n the size or the length of permutation p1,??p2,??...,??pn.
The decreasing coefficient of permutation p1,?p2,?...,?pn is
the number of such i (1?≤?i?<?n), that pi?>?pi?+?1.
You have numbers n and k.
Your task is to print the permutation of length n with decreasing coefficient k.
Input
The single line contains two space-separated integers: n,?k (1?≤?n?≤?105,?0?≤?k?<?n) —
the permutation length and the decreasing coefficient.
Output
In a single line print n space-separated integers: p1,?p2,?...,?pn —
the permutation of length n with decreasing coefficient k.
If there are several permutations that meet this condition, print any of them. It is guaranteed that the permutation with the sought parameters exists.
Sample test(s)
input
5 2
output
1 5 2 4 3
这种题目难就难在下标处理。当然题目本身不难。
void SlightlyDecreasingPermutations() { int n, k; cin>>n>>k; int *A = new int[n]; for (int i = 0; i < n - k - 1; i++) { A[i] = i + 1; } for (int i = n - k - 1, j = n; i < n; i++, j--) { A[i] = j; } for (int i = 0; i < n; i++) { cout<<A[i]<<‘ ‘; } delete [] A; }
void SlightlyDecreasingPermutations_2() { int n, k; cin>>n>>k; int *A = new int[n]; for(int i = 0; i < n; ++i) A[i] = i+1; reverse(A,A+k+1); for(int i = 0; i < n; ++i) cout<<A[i]<<‘ ‘; }
codeforces A. Slightly Decreasing Permutations 题解,码迷,mamicode.com