This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |