Cod sursa(job #2907555)

Utilizator SeracovanuEdwardSeracovanu Edward SeracovanuEdward Data 30 mai 2022 18:48:08
Problema Oo Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

int n;
int ans = 0;
int dp[100005],A[100005];

int main()
{
    freopen("oo.in","r",stdin);
    freopen("oo.out","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    cin >> n;
    for(int i = 1;i <= n; ++i)cin >> A[i];
    //prima si a doua
    dp[1] = A[1];
    dp[2] = A[1] + A[2];
    for(int i = 3;i < n; ++i)
        dp[i] = max(dp[i-1],dp[i-3] + A[i-1] + A[i]);
    ans = max(ans , dp[n-1]);
    memset(dp,0,sizeof(dp));
    //prima si ultima
    dp[1] = A[1];
    for(int i = 2;i <= n - 2; ++i)
        dp[i] = max(dp[i-1] , dp[i-3] + A[i-1] + A[i]);
    ans = max(ans , dp[n-2]);
    memset(dp,0,sizeof(dp));
    //ignore prima
    dp[2] = A[2];
    dp[3] = A[2] + A[3];
    for(int i = 4;i <= n; ++i)
        dp[i] = max(dp[i-1] , dp[i-3] + A[i-1] + A[i]);
    ans = max(ans , dp[n]);
    cout << ans;
}