Cod sursa(job #349806)

Utilizator MKLOLDragos Ristache MKLOL Data 21 septembrie 2009 16:31:40
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>

int maxim,N,a[100001],v[100001];

int max(int a,int b)
{
    if(a>b)
    return a;
    return b;
}


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


scanf("%d",&N);



for(int i=1;i<=N;++i)
{
scanf("%d",&v[i]);
}
a[1]=v[1]+v[N];
a[2]=max(a[1],v[2]+v[3]);

for(int i=3;i<=N-2;++i)
{
a[i]=max(a[i-2],a[i-3]+v[i]+v[i-1]);
}
a[2]=v[2]+v[1];
a[1]=0;
a[3]=max(a[2],v[3]+v[2]);
if(a[N-2]>maxim)
maxim=a[N];
for(int i=4;i<=N-1;++i)
{
    a[i]=max(a[i-2],a[i-3]+v[i]+v[i-1]);
}
if(a[N-1]>maxim)
maxim=a[N];
a[2]=0;
a[3]=v[3]+v[2];
a[4]=max(a[3],v[3]+v[4]);
for(int i=5;i<=N;++i)
{
    a[i]=max(a[i-2],a[i-3]+v[i]+v[i-1]);
}
if(a[N]>maxim)
maxim=a[N];
printf("%d",maxim);

}