#include <bits/stdc++.h>
#define lsb(x) (x & (-x))
#define ll long long
#define ull unsigned long long
// 217
// 44
using namespace std;
const int MAXN = (int) 1e6;
char str[MAXN + 1];
int dp[MAXN + 1][3][3], m;
inline void mod(int &x) {
if(x >= m)
x -= m;
}
inline void add(int &x, int y) {
x += y;
mod(x);
}
int main() {
//ifstream cin("A.in");
//ofstream cout("A.out");
int i, n;
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m >> str + 1;
dp[0][0][0] = 1;
for(i = 0; i < n; i++) {
for(int l = 0; l < 3; l++) {
for(int p = 0; p < 3; p++) {
if(l < 2) {
add(dp[i + 1][l + 1][max(p - 1, 0)], dp[i][l][p]);
}
if(p < 2) {
add(dp[i + 1][max(l - 1, 0)][p + 1], dp[i][l][p]);
}
}
}
}
int ans = 1;
int best_p = 0, best_l = 0;
for(i = 1; i <= n; i++) {
if(str[i] == 'P' && best_l < 2) { // L
int cur_p = max(best_p - 1, 0);
int cur_l = best_l + 1;
for(int l = 0; l < 3; l++) {
for(int p = 0; p < 3; p++) {
if(cur_p + p <= 2 && cur_l + l <= 2) {
add(ans, dp[n - i][l][p]);
}
}
}
}
if(str[i] == 'P') {
best_p++;
best_l--;
}
else {
best_l++;
best_p--;
}
best_l = max(best_l, 0);
best_p = max(best_p, 0);
}
cout << ans;
//cin.close();
//cout.close();
return 0;
}
Compilation message
linear_garden.cpp: In function 'int main()':
linear_garden.cpp:32:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
cin >> n >> m >> str + 1;
~~~~^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
512 KB |
Output is correct |
2 |
Correct |
2 ms |
512 KB |
Output is correct |
3 |
Correct |
2 ms |
512 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
1024 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
1152 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
2560 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
3072 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
26 ms |
11872 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
33 ms |
15324 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
39 ms |
19320 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
46 ms |
23516 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
72 ms |
37496 KB |
Output is correct |
2 |
Correct |
74 ms |
37556 KB |
Output is correct |
3 |
Correct |
74 ms |
37624 KB |
Output is correct |