Submission #432683

#TimeUsernameProblemLanguageResultExecution timeMemory
432683zxcvbnmLinear Garden (IOI08_linear_garden)C++14
100 / 100
16 ms6248 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, mod; cin >> n >> mod; int p[n]; p[0] = 1; for(int i = 1; i < n; i++) { p[i] = p[i-1] * 2; p[i] %= mod; } string str; cin >> str; int low = 0, high = 0, curr = 0, ans = 1; for(int i = 0; i < n; i++) { if (str[i] == 'P') { int curr_2 = curr-1; int low_2 = min(low, curr_2); int high_2 = high; curr++; if (high_2 - low_2 > 2) continue; else if (high_2 - low_2 == 2) { if (curr_2 != high_2 && curr_2 != low_2) { ans += p[(n-i)/2]; ans %= mod; } else { ans += p[(n-i-1)/2]; ans %= mod; } } else if (high_2 - low_2 == 1) { ans += p[(n-i)/2] + p[(n-i-1)/2] - 1; ans %= mod; if (ans < 0) { ans += mod; } } } else { curr--; } low = min(low, curr); high = max(high, curr); // cout << ans << " " << low << " " << high << "\n"; } cout << ans << "\n"; return 0; }
#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...