Submission #1152157

#TimeUsernameProblemLanguageResultExecution timeMemory
1152157knhatdevLinear Garden (IOI08_linear_garden)C++20
90 / 100
82 ms126880 KiB
#include <bits/stdc++.h>
#define int long long
#define ii pair<int,int>
#define fi first
#define se second
using namespace std;

const int N = 1e6 + 5;
int n, m, dp[N][4][4], ans = 1;
string s;
main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n >> m >> s;
    s = ' ' + s;
    for(int i = n; i >= 0; i--){
        for(int j = 2; j >= 0; j--){
            for(int k = 2; k >= 0; k--){
                if(i == n){
                    dp[i][j][k] = 1;
                    continue;
                }
                dp[i][j][k] = (dp[i + 1][max(j - 1, 0ll)][k + 1] + dp[i + 1][j + 1][max(k - 1, 0ll)]) % m;
            }
        }
    }
    int x = 0, y = 0;
    for(int i = 1; i <= n; i++){
        if(s[i] == 'L'){
            x++;
            y--;
            if(y < 0) y = 0;
        } else {
            ans = (ans + dp[i][x + 1][max(0ll, y - 1)]) % m;
            y++;
            x--;
            if(x < 0) x = 0;
        }
    }
    cout << ans;
}

Compilation message (stderr)

linear_garden.cpp:11:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   11 | main() {
      | ^~~~
#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...