제출 #998989

#제출 시각아이디문제언어결과실행 시간메모리
998989huutuanLinear Garden (IOI08_linear_garden)C++14
80 / 100
45 ms65536 KiB
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int n, m; int f[N][3][3]; int dp(int i, int minpf, int maxpf){ if (minpf<-2 || maxpf>2) return 0; if (i==n+1) return 1%m; if (f[i][-minpf][maxpf]!=-1) return f[i][-minpf][maxpf]; int res=0; res=(res+dp(i+1, min({0, minpf-1, -1}), max({0, maxpf-1, -1})))%m; res=(res+dp(i+1, min({0, minpf+1, +1}), max({0, maxpf+1, +1})))%m; return f[i][-minpf][maxpf]=res; } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); memset(f, -1, sizeof f); cin >> n >> m; int ans=0, minpf=0, maxpf=0; for (int i=1; i<=n; ++i){ char c; cin >> c; if (c=='P'){ ans=(ans+dp(i+1, min({0, minpf-1, -1}), max({0, maxpf-1, -1})))%m; minpf=min({0, minpf+1, +1}), maxpf=max({0, maxpf+1, +1}); }else{ minpf=min({0, minpf-1, -1}), maxpf=max({0, maxpf-1, -1}); } } cout << (ans+1)%m << '\n'; return 0; }
#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...