57532023-09-16 13:09:45AblablablaJárda-L (40)cpp17Accepted 40/403ms4356 KiB
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> dp;

int megold(int teljes, int fel){
    if(teljes < 0){
        return 0;
    } else if(teljes == 0 && fel == 0){
        return 1;
    }
    if(dp[teljes][fel] != -1){
        return dp[teljes][fel];
    }

    int vissza = 0;

    if(fel == 2){
        vissza += megold(teljes, 0);    // kettes fektetve
    } else if(fel == 1){
        vissza += megold(teljes - 1, 1);    // kettes fektetve
        vissza += megold(teljes - 1, 0);    // L
    } else if(fel == 0){
        vissza += megold(teljes - 2, 2);    // kettes fektetve
        vissza += megold(teljes - 1, 0);    // kettes allitva
        vissza += megold(teljes - 2, 1) * 2;    // L
    }

    //cout << teljes << " " << fel << " : " << vissza << "\n";
    return dp[teljes][fel] = vissza;
}

int main()
{
    int n;
    cin >> n;

    dp.assign(n + 1, vector<int>(3, -1));

    cout << megold(n, 0) << "\n";
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/03ms1812 KiB
2Accepted0/03ms2056 KiB
3Accepted2/22ms2276 KiB
4Accepted2/22ms2436 KiB
5Accepted2/23ms2684 KiB
6Accepted2/22ms2776 KiB
7Accepted2/23ms2904 KiB
8Accepted3/33ms3120 KiB
9Accepted3/32ms3236 KiB
10Accepted3/32ms3320 KiB
11Accepted3/32ms3444 KiB
12Accepted3/32ms3680 KiB
13Accepted3/33ms3804 KiB
14Accepted3/33ms3996 KiB
15Accepted3/33ms4136 KiB
16Accepted3/33ms4232 KiB
17Accepted3/33ms4356 KiB