Submission #1338287

#TimeUsernameProblemLanguageResultExecution timeMemory
1338287charlestititititLinear Garden (IOI08_linear_garden)C++20
0 / 100
39 ms36392 KiB
#include <bits/stdc++.h>
//#define int long long

using namespace std;

int dp[1000069][3][3];
char s[1000069];

signed main(){

    cin.tie(0); ios::sync_with_stdio(0);

    int n, M; cin >> n >> M;
    for(int i=1; i<=n; i++) cin >> s[i];
//    memset(dp[0], 1, sizeof dp[0]);
    for(int i=0; i<=n; i++)for(int j=0; j<=2; j++) for(int k=0; k<=2; k++){
        if(i==0) {dp[0][j][k] = 1; continue; }
        dp[i][j][k] = dp[i-1][j+1][max(k-1,0)] + dp[i-1][max(0,j-1)][k+1];
        dp[i][j][k] % M;
    }

    int j=0, k=0;
    int cnt = 1;

    for(int i=1; i<=n; i++){
//        cout << s[i] << "A\n";
        if(s[i] == 'L'){
            j--, k++; j=max(0,j); continue;
        }
        else{
            cnt += dp[n-i+1][max(0, j-1)][k+1];
            cnt %= M;
            j++, k--; k = max(0, k);
        }
    }

    cout << cnt;


    return 0;
}
#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...