输出too short
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a[10005],b[10005],s;
int dfs(int x,int f)
{
if(x==n+1)
{
s++;
if(m==s-1)
{
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
cout<<endl;
return 1;
}
return 0;
}
if(f==0)
{
for(int i=a[x];i<=n;i++)
{
if(!b[i])
{
b[i]=1;
if(i!=a[x])
f=1;
a[x]=i;
if(dfs(x+1,f))return 1;
b[i]=0;
}
}
}
else
for(int i=1;i<=n;i++)
{
if(!b[i])
{
b[i]=1;
a[x]=i;
if(dfs(x+1,1))return 1;
b[i]=0;
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(1,0);
return 0;
}