#include<bits/stdc++.h>
using namespace std ;
const int N = 1e6+9 ;
int n,md,ans=0,bit=0,mid=2 ;
int dp[2][3][3][5];///flip bit, max , min , sum
char s[N];
void update()
{
for(int i=1;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<5;k++)
dp[bit^1][i][j][k]=0;
for(int i=1;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<5;k++)
{
int x=i,y=-j,sum=k-mid,tmp=dp[bit][i][j][k];
if(abs(sum-x+1)<=2&&abs(sum-y+1)<=2)
dp[bit^1][max(sum+1,x)][j][k+1]=
(dp[bit^1][max(sum+1,x)][j][k+1]+tmp)%md;
if(abs(sum-x-1)<=2&&abs(sum-y-1)<=2)
dp[bit^1][i][-min(sum-1,y)][k-1]=
(dp[bit^1][i][-min(sum-1,y)][k-1]+tmp)%md;
}
}
}
bit^=1;
}
void qans(int x,int mx,int mn,int sum)
{
if(x>n)return ;
int tmp1=sum ;
if(s[x]=='P')tmp1--;
else tmp1++;
qans(x+1,max(mx,tmp1),min(mn,tmp1),tmp1);
if(s[x]=='P')
for(int i=1;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<5;k++)
{
int dx=i+sum,dy=-j+sum,sum=k-mid,tmp=dp[bit][i][j][k];
if(abs(dx-mx)<=2&&abs(dx-mn)<=2&&abs(dy-mx)<=2&&abs(dy-mn)<=2)
ans=(ans+tmp)%md;
}
update();
}
main()
{
ios::sync_with_stdio(false),cin.tie(0);
int i,j ;
cin >> n >> md ;
for(i=1;i<=n;i++)cin >> s[i] ;
dp[0][1][0][mid+1]=1;
qans(1,0,0,0);
cout << (ans+1)%md ;
}
Compilation message
linear_garden.cpp: In function 'void qans(int, int, int, int)':
linear_garden.cpp:39:32: warning: unused variable 'sum' [-Wunused-variable]
int dx=i+sum,dy=-j+sum,sum=k-mid,tmp=dp[bit][i][j][k];
^~~
linear_garden.cpp: At global scope:
linear_garden.cpp:45:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
main()
^
linear_garden.cpp: In function 'int main()':
linear_garden.cpp:48:11: warning: unused variable 'j' [-Wunused-variable]
int i,j ;
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
428 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
512 KB |
Output is correct |
2 |
Correct |
3 ms |
640 KB |
Output is correct |
3 |
Correct |
3 ms |
640 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
1664 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
10 ms |
1792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
4356 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
27 ms |
5108 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
110 ms |
20452 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
157 ms |
26456 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
178 ms |
33464 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
209 ms |
40760 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
323 ms |
64888 KB |
Output is correct |
2 |
Correct |
319 ms |
65144 KB |
Output is correct |
3 |
Correct |
356 ms |
65116 KB |
Output is correct |