Submission #540694

#TimeUsernameProblemLanguageResultExecution timeMemory
540694guestLinear Garden (IOI08_linear_garden)C++14
100 / 100
16 ms6164 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 = -1e9, l = 1e9, cnt =0 ; ll ans = 0; for (int i = 1; i <= n; ++i) { h = max(h, cnt); l = min(l, cnt); if (s[i] == 'L') ++cnt; if (s[i] == 'P') { ++cnt; if (cnt - l > 2) { cnt-=2; continue; } if (max(cnt, h) - l == 2){ { ans += f[(n-i)/2]; ans %= m; } } else { ans += f[(n-i)/2] + f[(n-i+1)/2] - 1; ans %= m; } cnt -= 2; } } cout<<(ans+1)%m; } 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:39:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   39 |     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...