Submission #1009711

#TimeUsernameProblemLanguageResultExecution timeMemory
1009711Double_SlashLinear Garden (IOI08_linear_garden)C++17
100 / 100
55 ms38604 KiB
#include <bits/stdc++.h> using namespace std; int n, m, dp[1000001][3][3]; int main() { cin >> n >> m; for (int mn = 0; mn <= 2; ++mn) { for (int mx = max(mn, 2); mx <= 4; ++mx) { dp[n][mn][mx - 2] = 1; } } for (int i = n; i--;) { for (int mn = 0; mn <= 2; ++mn) { for (int mx = max(mn, 2); mx <= 4; ++mx) { if (mn > 0) dp[i][mn][mx - 2] += dp[i + 1][mn - 1][max(2, mx - 1) - 2]; if (mx < 4) dp[i][mn][mx - 2] += dp[i + 1][min(2, mn + 1)][mx + 1 - 2]; dp[i][mn][mx - 2] %= m; } } } string s; cin >> s; int ans = 1; for (int i = 0, mn = 2, mx = 2; i < n; ++i) { if (s[i] == 'P') { if (mn > 0) ans = (ans + dp[i + 1][mn - 1][max(2, mx - 1) - 2]) % m; mn = min(2, mn + 1); mx++; } else { mn--; mx = max(2, mx - 1); } } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...