Submission #1004775

#TimeUsernameProblemLanguageResultExecution timeMemory
100477512345678Linear Garden (IOI08_linear_garden)C++17
100 / 100
10 ms24824 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int nx=1e6+5; ll n, m, dp[3][nx], res, cnt, mx, mn; string s; int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m>>s; dp[0][0]=dp[1][0]=dp[2][0]=1; for (int i=1; i<=n; i++) { dp[0][i]=dp[1][i-1]; dp[1][i]=(dp[0][i-1]+dp[2][i-1])%m; dp[2][i]=dp[1][i-1]; //cout<<"count "<<i<<' '<<dp[0][i]+dp[1][i]+dp[2][i]-2<<'\n'; } for (int i=0; i<n; i++) { if (s[i]=='P') { ll tmp=cnt; tmp++; ll nmx=max(mx,tmp), nmn=mn, t=0; if (nmx-nmn<=2) { if (max(tmp+1, nmx)-min(tmp-1, nmn)<=2) res=(res+dp[1][n-i-1])%m, t++; if (tmp==nmx) res=(res+dp[2][n-i-1])%m, t++; } if (t==2) res=(((res-1)%m)+m)%m; } if (s[i]=='P') cnt--; else cnt++; mx=max(mx, cnt); mn=min(mn, cnt); } cout<<(res+1)%m; }
#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...