Submission #1129915

#TimeUsernameProblemLanguageResultExecution timeMemory
1129915aloszaCandies (JOI18_candies)C++20
8 / 100
5093 ms4164 KiB
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    int n2 = (n+1)/2;
    vector<int> candies(n);
    for(int i = 0; i < n; i++)
    {
        cin >> candies[i];
    }
    // vector<vector<ll>> dp(n+1); //index, k
    vector<vector<ll>> lastcols(2);
    vector<ll> newcol(n2+1);
    // for(int i = 0; i < n+1; i++)
    // {
    //     dp[i] = vector<ll>(n2+1);
    //     if(i == 1)
    //     {
    //         for(int k = 1; k < n2+1; k++)
    //         {
    //             dp[i][k] = candies[0];
    //         }
    //     }
    // }
    lastcols[0] = vector<ll>(n2+1);
    lastcols[1] = vector<ll>(n2+1);
    lastcols[1][1] = candies[0];
    // for(int i = 2; i < n+1; i++)
    // {
    //     for(int k = 1; k < n2+1; k++)
    //     {
    //         if(2*(k-1) < i) dp[i][k] = max(dp[i-1][k], dp[i-2][k-1] + candies[i-1]);
    //     }
    // }
    for(int i = 2; i < n+1; i++)
    {
        newcol = vector<ll>(n2+1);
        for(int k = 1; k < n2+1; k++)
        {
            if(2*(k-1) < i) newcol[k] = max(lastcols[1][k], lastcols[0][k-1] + candies[i-1]);
        }
        lastcols[0] = lastcols[1];
        lastcols[1] = newcol;
    }

    // for(int k = 1; k < n2+1; k++)
    // {
    //     cout << dp[n][k] << "\n";
    // }

    for(int k = 1; k < n2+1; k++)
    {
        cout << lastcols[1][k] << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...