제출 #1338014

#제출 시각아이디문제언어결과실행 시간메모리
1338014AhmadAlhussainLinear Garden (IOI08_linear_garden)C++20
90 / 100
158 ms118792 KiB
#include<iostream>
using namespace std;
const int N = 1000005;
int n,m;
int dp[N][6];
int cnt=1;
char s[N];
char c[3][3];
int rec(int st,char x,char y) {
    if(dp[st][c[-x][y]]!=0) {
        return dp[st][c[-x][y]];
    }
    if(st==n) {
        return dp[st][c[-x][y]]=1;
    }
    if(x>-2) {
        dp[st][c[-x][y]]+=rec(st+1,x-1,max(y-1,0));
    }
    if(y<2) {
        dp[st][c[-x][y]]+=rec(st+1,min(x+1,0),y+1);
    }
    return dp[st][c[-x][y]]%=m;
}
void rec1(int st,char x,char y) {
    if(st==n)return;
    if(s[st]=='P') {
        cnt+=dp[st+1][c[-(x-1)][max(y-1,0)]];
        cnt%=m;
        rec1(st+1,min(x+1,0),y+1);
    }
    else {
        rec1(st+1,x-1,max(y-1,0));
    }
}
signed main() {
    //cin.tie(0)->sync_with_stdio(0);
    cin >> n>>m>>s;
    c[0][1]=1,c[1][0]=2,c[1][1]=3,c[2][0]=4,c[0][2]=5;
    rec(0,0,0);
    rec1(0,0,0);
    cout<<cnt<<'\n';

}
#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...