首页 > 代码库 > codeforces A. Slightly Decreasing Permutations 题解
codeforces A. Slightly Decreasing Permutations 题解
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.
The single line contains two space-separated integers: n,?k (1?≤?n?≤?105,?0?≤?k?<?n) — the permutation length and the decreasing coefficient.
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.
5 2
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]<<‘ ‘; }