Cod sursa(job #3200502)

Utilizator Toni07Stoica Victor Toni07 Data 4 februarie 2024 21:05:45
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
const int nmax=1e5+5;
int dp[nmax],v[nmax];
int main()
{
    /*
    dp[i]=nr max de oua din primele i sectoare
    */
    ifstream fin ("oo.in");
    ofstream fout ("oo.out");
    int n;
    fin >> n;
    for (int i=1;i<=n;++i)
        fin >> v[i];
    dp[0]=dp[1]=0;
    dp[2]=v[1]+v[2];
    for (int i=3;i<=n-1;++i)
        dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i-1]); // luam perechea 1 - 2 (nu putem alege n)
    int sol=dp[n-1];
    //fout << sol << " ";
    dp[2]=0;
    for (int i=3;i<=n-3;++i)
        dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i-1]); // luam perechea (n-1) - n (nu putem alege n-2 si 1)
    //fout << dp[n-3]+v[n]+v[n-1] << " ";
    sol=max(sol,dp[n-3]+v[n]+v[n-1]);
    dp[3]=0;
    for (int i=4;i<=n-2;++i)
        dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i-1]); // luam perechea 1 - n (nu putem alege 2 si n-1)
    // fout << dp[n-2]+v[n]+v[1];
    sol=max(sol,dp[n-2]+v[n]+v[1]);
    fout << sol;
    return 0;
}