# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
131914 | dragonslayerit | Linear Garden (IOI08_linear_garden) | C++14 | 157 ms | 65540 KiB |
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 <cstdio>
#include <cassert>
char str[1000005];
int MOD;
struct State{
char max,curr;
State(char max,char curr):max(max),curr(curr){
assert(curr>=0&&curr<=max);
}
State up()const{
return (curr==max)?State(max+1,max+1):State(max,curr+1);
}
State down()const{
return (curr==0)?State(max+1,0):State(max,curr-1);
}
};
int memo[1000005][9];
int vis[1000005][9];
int complete(State prefix,int len){
if(prefix.max>2) return 0;
if(len==0) return 1;
int code=prefix.max*3+prefix.curr;
if(vis[len][code]) return memo[len][code];
vis[len][code]=true;
return memo[len][code]=(complete(prefix.up(),len-1)+complete(prefix.down(),len-1))%MOD;
}
int main(){
int N;
scanf("%d %d",&N,&MOD);
scanf("%s",str);
int ans=1;
State prefix(0,0);
for(int i=0;i<N;i++){
for(int s=0;s<3;s++){
for(int t=0;t<=s;t++){
complete(State(s,t),N/2);
}
}
}
for(int i=0;i<N;i++){
if(str[i]=='P'){
ans=(ans+complete(prefix.down(),N-i-1))%MOD;
prefix=prefix.up();
}else{
prefix=prefix.down();
}
}
printf("%d\n",ans);
return 0;
}
Compilation message (stderr)
# | 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... |