Cod sursa(job #1336043)

Utilizator Miruna_DMiruna Miruna_D Data 6 februarie 2015 14:21:18
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#define Nmax 100005
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,x[Nmax];
int DP[Nmax];
int sol=-1;
void read()
{
    fin>>n;
    int i;
    for(i=1;i<=n;i++)
        fin>>x[i];
    x[n+1]=x[1];
}

void dinamica(int start, int finish)
{
    ///DP[i]=nr maxim de oua adunate pana in sectorul i
    DP[start]=0;
    DP[start+1]=x[start]+x[start+1];
    for(int i=start+2;i<=finish;i++)
        DP[i]=max(DP[i-1],DP[i-3]+x[i]+x[i-1]);

    sol=max(sol,DP[finish]);

}
int main()
{
    read();
    dinamica(1,n-1);
    dinamica(2,n);
    dinamica(3,n+1);

    fout<<sol;
    return 0;
}