Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: mrblbb
Problemset: สุ่มสลับ
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-13 11:56:31
#include <stdio.h>
#include <string.h>
long long fac(int n){
if (n==0 || n==1){
return 1;
} else{
return n* fac(n-1);
}
}
int main(){
int n;
long long order=0;
scanf("%d", &n);
char str[n+1], sort[n+1];
scanf("%s", str);
strcpy(sort,str);
for (int i=1; i<n; i++){
for (int j=0; j<n-i; j++){
if (sort[j] > sort[j+1]){
char temp = sort[j];
sort[j] = sort[j+1];
sort[j+1]= temp;
}
}
}
int g=0;
for (int i=0; i<n; i++){
g=-1;
for (int j=0; j<n; j++){
if (sort[j]!='-'){
g++;
}
if (str[i] == sort[j]){
order += fac(n-i-1) * g;
sort[j] = '-';
break;
}
}
}
printf("%lld", order+1);
}