Submission
Status:
-PP---P----PP-P-----
Subtask/Task Score:
30/100
Score: 30
User: anonymous
Problemset: สุ่มสลับ
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-01 16:35:52
#include <bits/stdc++.h>
using namespace std;
long long factorial(int n) {
long long fact = 1;
for (int i = 1; i <= n; i++) {
fact *= i;
}
return fact;
}
int main()
{
int n;
cin >> n;
string s;
cin >> s;
vector<char> available;
for (int i = 0; i < n; i++) {
available.push_back('A' + i);
}
long long rank = 1;
for (int i = 0; i < n; i++) {
char cur_char = s[i];
int count_smaller = 0;
int found = -1;
for (int j = 0; j < available.size(); j++) {
if (available[j] < cur_char) {
count_smaller++;
} else if (available[j] == cur_char) {
found = j;
break;
}
}
rank += count_smaller * factorial(n - 1 - i);
}
cout << rank << "\n";
return 0;
}