1 #include <bits/stdc++.h>
2 using namespace std;
3 #define _for(i,a,b) for(int i = (a);i < b;i ++)
4 const int maxn = 10009;
5 typedef long long ll;
6 int N,M;
7 int a[maxn];
8 inline ll read()
9 {
10 ll ans = 0;
11 char ch = getchar(), last = ' ';
12 while(!isdigit(ch)) last = ch, ch = getchar();
13 while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
14 if(last == '-') ans = -ans;
15 return ans;
16 }
17 inline void write(ll x)
18 {
19 if(x < 0) x = -x, putchar('-');
20 if(x >= 10) write(x / 10);
21 putchar(x % 10 + '0');
22 }
23
24 int main()
25 {
26 N = read(),M = read();
27 _for(i,0,N)
28 a[i] = read();
29 do
30 {
31 if(M==0)
32 break;
33 M --;
34 }while(next_permutation(a,a+N));
35 _for(i,0,N)
36 {
37 write(a[i]);
38 if(i!=N-1)
39 printf(" ");
40 }
41 return 0;
42 }
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #define _for(i,a,b) for(int i = (a);i < b;i ++)
5 typedef long long ll;
6 using namespace std;
7 ll a[10003];
8 ll rnt[10003];
9 int vis[10003];
10 int m,n;
11 inline ll read()
12 {
13 ll ans = 0;
14 char ch = getchar(), last = ' ';
15 while(!isdigit(ch)) last = ch, ch = getchar();
16 while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
17 if(last == '-') ans = -ans;
18 return ans;
19 }
20 inline void write(ll x)
21 {
22 if(x < 0) x = -x, putchar('-');
23 if(x >= 10) write(x / 10);
24 putchar(x % 10 + '0');
25 }
26 int main()
27 {
28 n = read(),m = read();
29 ll res = 0;
30 _for(i,0,n)
31 a[i] = read();
32
33 _for(i,0,n)
34 {
35 ll tsum = 0;
36 _for(j,0,i+1)
37 if(a[j] <= a[i])
38 tsum ++;
39 rnt[i] = a[i]-tsum;
40 }
41 rnt[n-1] += m;
42 for(int i = n-1;i > 0;i--)
43 {
44 rnt[i-1] += rnt[i]/(n-i);
45 rnt[i] %= n-i;
46 }
47
48 memset(vis,0,sizeof(vis));
49 _for(i,0,n)
50 {
51 rnt[i] ++;
52 int j;
53 for(j = 1;j <= n;j ++)
54 {
55 if(vis[j])
56 continue;
57 rnt[i] --;
58 if(!rnt[i])
59 break;
60 }
61 vis[j] = 1;
62 printf("%d ",j);
63 }
64 return 0;
65 }