이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
long long n, m;
const int dydis = 5e5;
int dp[dydis][2][3][3] = {0};
string a;
int f(int ind, bool jauTikraiMaz, int buvo, int paskutinisDvig){
if(ind == n) return 1;
if(dp[ind][jauTikraiMaz][buvo][paskutinisDvig] != -1) return dp[ind][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][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 < dydis; 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];
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... |