Submission #688527

#TimeUsernameProblemLanguageResultExecution timeMemory
688527finn__Linear Garden (IOI08_linear_garden)C++17
100 / 100
17 ms9272 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); size_t n; uint64_t m; string s; cin >> n >> m >> s; vector<uint64_t> pow2(n + 1); pow2[0] = 1; for (size_t i = 1; i <= n; i++) pow2[i] = (pow2[i - 1] * 2) % m; int min_diff = 0, max_diff = 0, curr_diff = 0; uint64_t ans = 0; for (size_t i = 0; i < n; i++) { switch (s[i]) { case 'L': curr_diff--; break; case 'P': if (max_diff - min(min_diff, curr_diff - 1) == 2) ans = (ans + pow2[(n - i - 1 + (curr_diff - 1 == (max_diff - min(min_diff, curr_diff - 1)) / 2)) / 2]) % m; else if (max_diff - min(min_diff, curr_diff - 1) == 1) ans = (ans + pow2[(n - i - 1) / 2] + pow2[(n - i) / 2] - 1) % m; curr_diff++; break; } min_diff = min(min_diff, curr_diff); max_diff = max(max_diff, curr_diff); } cout << (ans + 1) % m << '\n'; }
#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...