Uim的情人节礼物·其之弐
题目描述
前传:详见洛谷P2525
Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐。
Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中、字典序第几小的。
输入格式
第一行一个整数N,表示有N个数。
第二行一个整数X,表示给出的排列。
输出格式
一个整数,表示是第几小的字典序。
样例 #1
样例输入 #1
3
231
样例输出 #1
4
提示
1<=N<=9
输入的排列没有空格
#include<bits/stdc++.h>
#define IL inline
#define RI register int
const int fac[]={1,1,2,6,24,120,720,5040,40320,362880};//阶乘
char s[108];
int n;
IL int Contor(char s[],int n)
{
int ans=0;
for(RI i=0;i<n;i++)
{
//std::cout<<ans<<std::endl;
int smaller=0;
for(RI j= i+1 ;j<n;j++)
{
if(s[i] > s[j])smaller++;
}
ans += smaller*fac[n-i-1];
}
return ans+1;
}
int main()
{
std::cin>>n;
std::cin>>s;
std::cout<<Contor(s,n);
}