18242022-12-04 10:20:22sztomiJardaTcpp17Accepted 40/403ms4324 KiB
#include <bits/stdc++.h>

using namespace std;

const long long mod = 20200111;
vector<vector<long long>> dp;

int megold(int n, int kilog){
    if(n < 0){
        return 0;
    }
    if(n < kilog){
        return 0;
    }
    if(n == 0){
        return 1;
    }

    if(dp[n][kilog] != -1){
        return dp[n][kilog];
    }
    long long ki = 0;
    if(kilog == 0){
        // L betu mindket fele forditva
        ki += megold(n-1, 1) * 2;
        // I betu allitva
        ki += megold(n-1, 0);
        // 2*I betu fektetve
        ki += megold(n-2, 0);
    }
    else{
        // L betu
        ki += megold(n-2, 0);
        // I betu fektetve
        ki += megold(n-1, 1);
        // T betu
        ki += megold(n-2, 1);
    }
    ki %= mod;
    dp[n][kilog] = ki;
    return ki;
}

int main()
{
    int n;
    cin >> n;
    dp.assign(n+1, vector<long long>(2, -1));
    cout << megold(n, 0) << "\n";
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/03ms1812 KiB
2Accepted0/02ms2208 KiB
3Accepted1/12ms2324 KiB
4Accepted1/12ms2484 KiB
5Accepted2/22ms2624 KiB
6Accepted2/22ms2856 KiB
7Accepted3/32ms2972 KiB
8Accepted3/32ms3176 KiB
9Accepted3/32ms3424 KiB
10Accepted3/32ms3460 KiB
11Accepted3/32ms3656 KiB
12Accepted3/32ms3732 KiB
13Accepted3/32ms3724 KiB
14Accepted3/32ms3868 KiB
15Accepted3/32ms4012 KiB
16Accepted3/32ms4124 KiB
17Accepted4/42ms4324 KiB