# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1150363 | knhatdev | Linear Garden (IOI08_linear_garden) | C++20 | 112 ms | 111072 KiB |
#include <bits/stdc++.h>
#define ii pair<int,int>
#define fi first
#define se second
#define int long long
#define task ""
using namespace std;
const int maxn = 1e6 + 5;
const int max_diff = 3;
int dp[maxn][2][2 * max_diff + 1];
int n, m, ans;
string S;
main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if(fopen(task ".inp", "r")){
freopen(task ".inp", "r", stdin);
freopen(task ".out", "w", stdout);
}
cin >> n >> m >> S;
dp[1][0][1 + max_diff] = 1;
dp[1][1][-1 + max_diff] = 1;
for (int i = 2; i <= n; ++i) {
for (int j = 0; j < 2; ++j) {
for (int diff_prev = -max_diff; diff_prev <= max_diff; ++diff_prev) {
if (dp[i-1][j][diff_prev + max_diff] == 0) continue;
int new_diff_L = diff_prev + 1;
if (new_diff_L >= -max_diff && new_diff_L <= max_diff) {
dp[i][0][new_diff_L + max_diff] = (dp[i][0][new_diff_L + max_diff] + dp[i-1][j][diff_prev + max_diff]) % m;
}
int new_diff_P = diff_prev - 1;
if (new_diff_P >= -max_diff && new_diff_P <= max_diff) {
dp[i][1][new_diff_P + max_diff] = (dp[i][1][new_diff_P + max_diff] + dp[i-1][j][diff_prev + max_diff]) % m;
}
}
}
}
int ans = 0;
int current_diff = 0;
for (int i = 0; i < n; ++i) {
if (S[i] == 'L') {
for (int diff = -max_diff; diff <= max_diff; ++diff) {
if (abs(current_diff + diff) <= 2) {
ans = (ans + dp[n - i][1][diff + max_diff]) % m;
}
}
current_diff += 1;
} else {
current_diff -= 1;
}
}
ans = (ans + 1) % m;
cout << ans;
}
Compilation message (stderr)
# | 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... |