Cod sursa(job #1345260)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 17 februarie 2015 14:39:18
Problema Oo Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>

using namespace std;

int MAX,i,n,a[500],d1[500],d2[500];


int MaX(int x,int y)
{
    if(x>y) return x;
    return y;

}

int main()
{
    freopen("oo.in","r",stdin);
    freopen("oo.out","w",stdout);

    scanf("%d",&n);

    for(i=1;i<=n;++i)
    scanf("%d",&a[i]);

////////////////////////////

    d1[2]=a[1]+a[2];
    d2[2]=0;d2[3]=d1[2];

    for(i=4;i<n;++i)
    {
        d1[i]=a[i]+d2[i-2]+a[i-1];
        d2[i]=MaX(d1[i-1],d2[i-1]);

    }

    MAX=MaX(d1[n-1],d2[n-1]);

/////////////////////////////

    d1[3]=a[2]+a[3];
    d2[3]=0;d2[4]=d1[3];

    for(i=5;i<=n;++i)
    {
        d1[i]=a[i]+d2[i-2]+a[i-1];
        d2[i]=MaX(d1[i-1],d2[i-1]);

    }

    MAX=MaX(MAX,MaX(d1[n-1],d2[n-1]));

/////////////////////////////

    d1[1]=a[1]+a[n];
    d2[1]=0;d2[2]=d1[3];

    for(i=3;i<n-1;++i)
    {
        d1[i]=a[i]+d2[i-2]+a[i-1];
        d2[i]=MaX(d1[i-1],d2[i-1]);

    }

    MAX=MaX(MAX,MaX(d1[n-1],d2[n-1]));

    printf("%d\n",MAX);

    return 0;
}