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;
}