Submission #540588

#TimeUsernameProblemLanguageResultExecution timeMemory
540588guestLinear Garden (IOI08_linear_garden)C++14
95 / 100
13 ms5196 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;
 }
 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...