#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m; cin >> n >> m; string s; cin >> s;
vector dp(3,vector(3,vector(5,vector<int>(2)))),res = dp;
++res[0][0][2][1] %= m;
for (int i(0);i < n;++i){
dp = res;
for (int a(0);a < 3;++a) for (int b(0);b < 3;++b) for (int c(0);c < 5;++c) res[a][b][c][0] = res[a][b][c][1] = 0;
for (int a(0);a < 3;++a) for (int b(0);b < 3;++b) for (int c(0);c < 5;++c) for (int d(0);d < 2;++d){
if (c+1<5) (res[max(a,c-1)][b][c+1][d&&s[i]=='L'] += dp[a][b][c][d]) %= m;
if ((!d||s[i]=='P')&&c-1>=0) (res[a][max(b,3-c)][c-1][d&&s[i]=='P'] += dp[a][b][c][d]) %= m;
}
for (int a(0);a < 3;++a) for (int b(0);b < 3;++b) if (a+b>=3) for (int c(0);c < 5;++c){
res[a][b][c][0] = res[a][b][c][1] = 0;
}
}
int r = 0;
for (int a(0);a < 3;++a) for (int b(0);b < 3;++b) for (int c(0);c < 5;++c) r += res[a][b][c][0]+res[a][b][c][1];
cout << r%m << endl;
}
# | 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... |