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 <bits/stdc++.h>
using namespace std;
long long n, m;
const int dydis = 9e5 + 1 ;
int dp[4][2][3][3] = {0};
string a;
int f(int ind, bool jauTikraiMaz, int buvo, int paskutinisDvig){
if(ind == n) return dp[ind&1][jauTikraiMaz][buvo][paskutinisDvig] = 1;
if(dp[ind & 1][jauTikraiMaz][buvo][paskutinisDvig] != -1) return dp[ind & 1][jauTikraiMaz][buvo][paskutinisDvig];
/// jei desiu 1
int st = 0;
if((a[ind] == '0' && jauTikraiMaz) || a[ind] == '1'){
int bsJau = jauTikraiMaz;
if(buvo != 1 + 1){
// nebus du is eiles
st = st + f(ind+1, bsJau, 1+1, paskutinisDvig); st %= m;
}else{
// bus du is eiles
if(paskutinisDvig != 1+1){
// jei pries tai nedejau dvigubu vienetu
st = st + f(ind+1, bsJau, 1+1, 1+1); st %= m;
}
}
}
/// jei desiu 0
int bsJau = jauTikraiMaz || (a[ind] == '1');
if(buvo != 0 + 1){
// nebus du is eiles
st = st + f(ind+1, bsJau, 0+1, paskutinisDvig); st %= m;
}else{
// bus du is eiles
if(paskutinisDvig != 0+1){
st = st + f(ind+1, bsJau, 0+1, 0+1); st %= m;
}
}
return dp[ind & 1][jauTikraiMaz][buvo][paskutinisDvig] = st;
}
int main() {
//ofstream out ("out.txt");
cin >> n >> m >> a;
for(auto &x : a) if(x == 'L') x = '0'; else x = '1';
int i, j, h, b;
for(i = 0; i < 3; i++) for(b = 0; b < 2; b++) for(j = 0; j < 3; j++) for(h = 0; h < 3; h++) dp[i][b][j][h] = -1;
//cout << "Viso yra " << dp[1][0][0] + dp[1][0][1];
for(int i = n-1; i > -1; i--){
for(int b = 0; b < 2; b++){
for(int h = 0; h < 3; h++){
for(int l = 0; l < 3; l++){
dp[i&1][b][h][l] = -1;
f(i, b, h, l);
}
}
}
}
cout << f(0, 0, 0, 0);
return 0;
}
# | 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... |