제출 #540584

#제출 시각아이디문제언어결과실행 시간메모리
540584guestLinear Garden (IOI08_linear_garden)C++14
75 / 100
16 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) {
              cur-=2;
               continue;
            }
          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;
}

컴파일 시 표준 에러 (stderr) 메시지

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |     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...