2 seconds
256 megabytes
standard input
standard output
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 permutationp1, 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
3 0
1 2 3
3 2
3 2 1
解题说明:此题就是输出1到n一串数字,其中保证存在k个前一个数大于后一个数的情况。很显然不可能把这些数存起来,为了简单只需要把最大的k个数字移到最前面即可,然后再从小到大输出剩下的数。
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; int main() { int n,k; int i; scanf("%d %d",&n,&k); for(i=0;i<k;i++) { printf("%d ",n-i); } for(i=1;i<=n-k;i++) { printf("%d ",i); } printf("\n"); return 0; }