#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(x) begin(x),end(x)
#define sz(x) (int)x.size()
#define ul unsigned long long
int gcd(int a,int b) {return b == 0 ? a:gcd(b,a%b);}
const int N = 1e6 + 10;
int pw[N];
int main() {
cin.tie(0)->sync_with_stdio(false);
int n,m;cin >> n >> m;
string s;cin >> s;
pw[0] = 1;
for(int i=1;i<N;i++){
pw[i] = pw[i - 1] * 2 % m;
}
int ans = 0;
int diff = 0,mx = 0,mn = 0;
for(int i=0;i<n;i++){
if(s[i] == 'P'){
int k = n - i - 1;
int ndiff = diff + 1;
int nmx = max(mx,ndiff);
int nmn = min(mn,ndiff);
ll res = 0;
if(nmx - nmn <= 2){
if(nmx - nmn == 2){
if(nmx == ndiff || nmn == ndiff){
res = pw[k / 2];
}
else{
res = pw[(k + 1) / 2];
}
}
else{
res = (pw[k / 2] + pw[(k + 1) / 2] - 1 + m) % m;
}
}
ans = (ans + res) % m;
}
if(s[i] == 'L'){
diff++;
}
else diff--;
mn = min(mn,diff);
mx = max(mx,diff);
}
cout << (ans + 1) % m;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |