Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: loop
Problemset: สุ่มสลับ
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-10 18:32:23
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
string s;
cin >> n >> s;
long long fact[13];
fact[0] = 1;
for (int i = 1; i <= 12; i++) fact[i] = fact[i - 1] * i;
bool used[26] = {false};
long long rank = 0;
for (int i = 0; i < n; i++) {
int smaller = 0; // unused letters smaller than s[i]
for (int c = 0; c < s[i] - 'A'; c++) if (!used[c]) smaller++;
rank += smaller * fact[n - 1 - i];
used[s[i] - 'A'] = true;
}
cout << rank + 1 << '\n';
return 0;
}