Cod sursa(job #1567143)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 12 ianuarie 2016 22:27:27
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<cstring>
#define NMax 100007
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");

int N,Sol;
int DP[NMax],Sec[NMax];

void Read()
{
    fin>>N;

    for(int i=1;i<=N;++i)   fin>>Sec[i];
}

void Solve()
{
    int i;

    Sec[0]=Sec[N];
    Sec[N+1]=Sec[1];

    for(i=1;i<=N-2;++i)
    {
        DP[i]=max(DP[i-3]+Sec[i]+Sec[i+1],DP[i-1]);
        Sol=max(Sol,DP[i]);
    }
    memset(DP,0,sizeof(DP));
    for(i=3;i<=N;++i)
    {
        DP[i]=max(DP[i-3]+Sec[i]+Sec[i+1],DP[i-1]);
        Sol=max(Sol,DP[i]);
    }
    memset(DP,0,sizeof(DP));
    for(i=2;i<=N-1;++i)
    {
        DP[i]=max(DP[i-3]+Sec[i]+Sec[i+1],DP[i-1]);
        Sol=max(Sol,DP[i]);
    }
}

void Print()
{
    fout<<Sol<<"\n";
}

int main()
{
    Read();
    Solve();
    Print();

    fin.close();
    fout.close();
    return 0;
}