73572024-01-08 10:33:04CWMJárdakövezés háromféle elemmelcpp17Accepted 30/306ms5624 KiB
#include <iostream>
#include <vector>
#include <set>
#include <queue>

using namespace std;
int mod = 2023;
int main()
{
    int n;
    cin >> n;
    vector<int> DPa = vector<int>(n+1);
    vector<int> DPb = vector<int>(n+1);
    vector<int> DPc = vector<int>(n + 1);
    DPa[0] = 1;
    DPa[1] = 2;
    DPb[0] = 0;
    DPb[1] = 2;
    DPc[0] = 1;
    DPc[1] = 2;
    for (size_t i = 1; i < n; i++)
    {
        //DPa cases
        DPa[i + 1] += DPc[i];
        DPa[i + 1] += 2 * DPb[i];
        DPa[i + 1] += 2 * DPb[i - 1];
        DPa[i + 1] += 2 * DPc[i - 1];
        DPa[i + 1] += DPa[i];
        DPa[i + 1] += DPa[i - 1];
        //DPb cases
        DPb[i + 1] += DPb[i];
        DPb[i + 1] += DPc[i];
        DPb[i + 1] += DPa[i];
        //DPc cases
        DPc[i + 1] += DPa[i+1];
        //mod
        DPa[i + 1] = DPa[i + 1] % mod;
        DPb[i + 1] = DPb[i + 1] % mod;
        DPc[i + 1] = DPc[i + 1] % mod;
    }
    cout << DPa[n];
}
SubtaskSumTestVerdictTimeMemory
base30/30
1Accepted0/03ms1816 KiB
2Accepted0/03ms2052 KiB
3Accepted2/23ms2260 KiB
4Accepted2/23ms2348 KiB
5Accepted2/23ms2540 KiB
6Accepted2/23ms2628 KiB
7Accepted2/23ms2756 KiB
8Accepted2/23ms2856 KiB
9Accepted2/24ms3512 KiB
10Accepted2/24ms3824 KiB
11Accepted2/24ms4632 KiB
12Accepted3/34ms5108 KiB
13Accepted3/33ms3460 KiB
14Accepted3/33ms3612 KiB
15Accepted3/36ms5624 KiB