#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,sum=0;
cin>>n;
int a[n],b[n]={0};
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[i]>a[j]) b[i]++;
for(int i=0;i<n;i++)
{
int res=b[i];
for(int j=1;j<=n-1-i;j++) res*=j;
sum+=res;
}
cout<<sum<<endl;
int left,right;
for(int i=n-1;i>=0;i--)
if(a[i-1]<a[i])
{
left=i-1;
break;
}
for(int i=n-1;i>=0;i--)
if(a[i]>a[left])
{
right=i;
break;
}
swap(a[left],a[right]);
for(int i=left+1;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[i]>a[j]) swap(a[i],a[j]);
for(int i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
return 0;
}
排列的字典序问题
于 2024-11-16 18:17:49 首次发布