Submission #540583

#TimeUsernameProblemLanguageResultExecution timeMemory
540583guestLinear Garden (IOI08_linear_garden)C++14
75 / 100
13 ms5076 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int N=1e6+10; int n,m; int f[N]; char s[N]; void solve() { int h = 0, l = 0; ll ans = 0; int cur = 0; for (int i = 1; i <= n; ++i) { h = max(h, cur); l = min(l, cur); if (s[i] == 'L') ++cur; if (s[i] == 'P') { ++cur; if (cur - l > 2) { } else if (max(cur, h) - l == 2){ if (cur == (max(cur, h) - l)/2) { ans += f[(n-i+1)/2]; ans %= m; } else { ans += f[(n-i)/2]; ans %= m; } } else { ans += f[(n-i)/2] + f[(n-i+1)/2] - 1; ans %= m; } cur -= 2; } } cout<<ans+1; } int main() { cin>>n>>m; scanf("%s", s + 1); f[0] = 1; for (int i = 1; i <= n; ++i) f[i] = (2*f[i - 1]) % m; solve(); return 0; }

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:43:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 |     scanf("%s", s + 1);
      |     ~~~~~^~~~~~~~~~~~~
#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...