Cod sursa(job #3308571)

Utilizator Lex._.Lex Guiman Lex._. Data 26 august 2025 12:16:28
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
#define NMAX 100002
using namespace std;

ifstream in("oo.in");
ofstream out("oo.out");

int oua[NMAX];
int dp[NMAX]; ///dp[i] = numarul maxim de oua care pot fi adunate din primele i sectoare

int main()
{
    int n;
    in >> n;
    for(int i=1; i<=n; i++)
        in >> oua[i];
    dp[2]=oua[1]+oua[2];
    for(int i=2; i<=n-1; i++)
    {
        dp[i]=max(dp[i-3]+(oua[i-1]+oua[i]), dp[i-1]);
    }
    int ans=dp[n-1];

    dp[1]=0; ///cazul in care luam sectoarele n-1 si n
    dp[2]=0;
    for(int i=3; i<=n; i++)
    {
        dp[i]=max(dp[i-3]+(oua[i-1]+oua[i]), dp[i-1]);
    }
    ans=max(ans, dp[n]);

    dp[1]=0; ///cazul in care luam sectoarele n si 1
    dp[2]=0;
    dp[3]=0;
    for(int i=4; i<=n-2; i++)
    {
        dp[i]=max(dp[i-3]+(oua[i-1]+oua[i]), dp[i-1]);
    }
    ans=max(ans, dp[n-2]+(oua[n]+oua[1]));
    out << ans;

    return 0;
}