제출 #648929

#제출 시각아이디문제언어결과실행 시간메모리
648929Spade1Linear Garden (IOI08_linear_garden)C++14
100 / 100
15 ms6284 KiB
#include<bits/stdc++.h> #define pii pair<int, int> #define pll pair<long long, long long> #define ll long long #define ld long double #define st first #define nd second #define pb push_back #define INF INT_MAX using namespace std; const int N = 1e6 + 10; int t[N]; void solve() { int n, m; cin >> n >> m; string s; cin >> s; t[0] = 1; for (int i = 1; i <= n; ++i) t[i] = 2*t[i-1] % m; int ans = 0; int mx = 0, mn = 0, cnt = 0; for (int i = 1; i <= n; ++i) { if (s[i-1] == 'L') { cnt--; mn = min(mn, cnt); continue; } int nmx = mx, nmn = min(mn, cnt-1); if (nmx - nmn > 2) { cnt++; mx = max(mx, cnt); continue; } if (nmx - nmn == 2) { if ((cnt-2) == (nmx+nmn)/2) { ans += t[(n-i+1)/2]; ans %= m; } else { ans += t[(n-i)/2]; ans %= m; } } else { ans += (t[(n-i)/2] + t[(n-i+1)/2] - 1); ans %= m; } cnt++; mx = max(mx, cnt); } cout << (ans+1)%m << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int t = 1; // cin >> t; while (t--) { solve(); } }
#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...