Cod sursa(job #2286301)

Utilizator georgitTreista Georgiana georgit Data 20 noiembrie 2018 08:45:34
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#define N 100000

using namespace std;

int a[N+5],dp[N+5];
int n,maxi;
ifstream f("oo.in");
ofstream g("oo.out");
void initializare()
{
    for(int i=1;i<=n+1;i++)
        dp[i]=0;
}
void sector12()//incep cu sectoarele 1 si 2
{
    dp[2]=maxi=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]);
    maxi=max(maxi,dp[n-1]);
    initializare();
}
void sector23()//incep cu sectoarele 2 si 3
{
    dp[3]=a[2]+a[3];
    maxi=max(maxi,dp[3]);
    for(int i=4;i<=n;i++)
        dp[i]=max(dp[i-1],dp[i-3]+a[i-1]+a[i]);
    maxi=max(maxi,dp[n]);
    initializare();
}
void sector34()//incep cu sectoarele 3 si 4
{
    a[n+1]=a[1];
    dp[4]=a[3]+a[4];
    maxi=max(maxi,dp[4]);
    for(int i=5;i<=n+1;i++)
        dp[i]=max(dp[i-1],dp[i-3]+a[i-1]+a[i]);
    maxi=max(maxi,dp[n+1]);
}
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>a[i];
    sector12();
    sector23();
    sector34();
    g<<maxi;
    return 0;
}