E-olymp DP problem

Three ones problem will not accepted. I don’t know what is problem. Can you find bug?

#include <bits/stdc++.h>
using namespace std;

// https://www.e-olymp.com/en/contests/17372/problems/181180
int main() {
    int n;
    cin>>n;
    if (n == 1) {
        cout<<"2";
        return 0;
    }
    vector<vector<unsigned long long int>> dp(2, vector<unsigned long long int>(n + 1, 0));
    dp[0][1] = dp[1][1] = 1;
    dp[0][2] = dp[1][2] = 2;

    for (int i = 3; i <= n; i++) {
        dp[0][i] = (dp[0][i - 1] + dp[1][i - 1]) % 12345;
        dp[1][i] = (dp[1][i - 2] + 2 * dp[0][i - 2]) % 12345;
    }

    cout<<dp[0][n] + dp[1][n];
    return 0;
}

your logic is correct, just print (dp[0][n]+dp[1][n])%12345 in final answer

1 Like

Yeah it worked. Thanks

1 Like