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;
int a,b,c,d,e,i,j,ii,jj,zx,xc,mod,dp[1000009][4][4],bo1,bo2,x,xx,BO1,BO2,pas,mn,mx,jm;
string s;
int main(){
ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>a>>mod;
cin>>s;s="0"+s;
dp[0][0][0]=1;
for(i=0; i<a; i++){
for(bo1=0; bo1<=2; bo1++){
for(bo2=0; bo2<=2; bo2++){
if(bo1+bo2>2) continue;
//-1
BO1=bo1+1;
BO2=max(bo2-1,0);
if(BO1<=2){
dp[i+1][BO1][BO2]+=dp[i][bo1][bo2];dp[i+1][BO1][BO2]%=mod;
}
//1
BO2=bo2+1;
BO1=max(bo1-1,0);
if(BO2<=2){
dp[i+1][BO1][BO2]+=dp[i][bo1][bo2];dp[i+1][BO1][BO2]%=mod;
}
}
}
}
mn=mx=0;jm=0;
for(i=1; i<=a; i++){
if(s[i]=='L'){
jm--;
if(jm<0) mn=max(mn,0-jm);
if(jm>0) mx=max(mx,jm);
continue;
}
int MN=mn,MX=mx;
jm--;
if(jm<0) mn=max(mn,0-jm);
if(jm>0) mx=max(mx,jm);
//
for(bo1=0; bo1<=2; bo1++){
for(bo2=0; bo2<=2; bo2++){
BO1=max(mn,bo1-jm);
BO2=max(mx,jm+bo2);
if(BO1+BO2>2) continue;
pas+=dp[a-i][bo1][bo2];pas%=mod;
}
}
//
mn=MN;mx=MX;
jm+=2;
if(jm<0) mn=max(mn,0-jm);
if(jm>0) mx=max(mx,jm);
}
pas++;pas%=mod;
cout<<pas;
return 0;
}
# | 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... |