Cod sursa(job #1096058)

Utilizator gabrielvGabriel Vanca gabrielv Data 1 februarie 2014 14:37:58
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>

using namespace std;

#define maxim(a,b) ((a>b)?(a):(b))

#define NMAX 100015

int V[NMAX];
int DP[NMAX];

int N,Sol;

int Read()
{
    freopen("oo.in","r",stdin);
    scanf("%d",&N);
    for(int i=1;i<=N;i++)
        scanf("%d",&V[i]);
}

void Solve(int a, int b)
{
    //DP[i] = numarul maxim de oua ce pot fi adunate pana in sectorul i

    DP[a] = 0;
    DP[a+1] = V[a] + V[a+1];

    for(int i=a+2;i<=b;i++)
        DP[i] = maxim(DP[i-1], DP[i-3]+V[i-1]+V[i]);
    Sol = maxim(Sol, DP[b]);
}

void Print()
{
    freopen("oo.out","w",stdout);
    printf("%d\n",Sol);
}

int main()
{
    Read();

    V[N+1] = V[1];

    Solve(1,N-1);
    Solve(2,N);
    Solve(3,N+1);

    Print();

    return 0;
}