Submission

Status:

PPPPPPPPPPPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: TonnamSora

Problemset: สุ่มสลับ

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-07 15:45:33

#include <iostream>
using namespace std;

int main(){
    int N;
    cin >> N;
    string s;
    cin >> s;
    int fac[13] = {1, 1, 2, 6, 24, 120, 720, 5040, 5040*8, 5040*8*9, 5040*8*9*10, 5040*8*9*10*11, 5040*72*10*11*12};
    int sum = 0;
    char m[N];
    int value;
    for(int i = 0; i < N; i++){
        m[i] = 'A' + i;
        //cout << m[i];
    }
    int idx = N;
    for(int i = 0; i < N; i++){
        value = 0;
        for(int j = 0; j < s[i] - 'A'; j++){
            if(m[j] != '_'){
                value++;
            }
        }
        //cout << value << " ";
        sum += (value) * fac[idx - 1];
        //cout << value << " " << fac[idx - 1] << " " << sum << "\n";
        for(int j = 0; j < N; j++){
            if(m[j] == s[i]){
                m[j] = '_';
            }
        }
        idx--;
    }
    cout << sum + 1;
}