Cod sursa(job #387586)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 27 ianuarie 2010 22:39:04
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#define maxim(a,b) a>b ? a : b
int n,max,v[100006],d[100006];
int main ()
{
    int i;
    freopen("oo.in","r",stdin);
    freopen("oo.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    d[1]=v[1]+v[2];
    d[2]=maxim(v[2]+v[3],d[1]);
    for(i=3;i<=n-2;i++)
        d[i]=maxim(d[i-3]+v[i]+v[i+1],d[i-1]);
    if(d[n-2]>max)
        max=d[n-2];
        
    d[0]=d[1]=0;
    d[2]=v[2]+v[3];
    for(i=3;i<=n-1;i++)
        d[i]=maxim(d[i-3]+v[i]+v[i+1],d[i-1]);
    if(d[n-1]>max)
        max=d[n-1];

    d[0]=d[1]=d[2]=0;
    for(i=3;i<=n-1;i++)
        d[i]=maxim(d[i-3]+v[i]+v[i+1],d[i-1]);
    d[n]=maxim(d[n-1],d[n-3]+v[n]+v[1]);
    if(d[n]>max)
        max=d[n];

    printf("%d\n",max);
    return 0;
}