Cod sursa(job #1053341)

Utilizator geniucosOncescu Costin geniucos Data 12 decembrie 2013 18:01:30
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
using namespace std;
int i,n,a[100009],dp[100009],ma[100009];
int max(int a,int b)
{
    if(a>b) return a;
    return b;
}
int det(int st,int dr)
{
    dp[st]=ma[st]=ma[st-1]=0;
    ma[st+1]=dp[st+1]=a[st]+a[st+1];
    for(i=st+2;i<=dr;i++)
    {
        dp[i]=ma[i-3]+a[i]+a[i-1];
        ma[i]=max(ma[i-1],dp[i]);
    }
    return ma[dr];
}
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]);
printf("%d\n",max(max(det(4,n-1)+a[1]+a[2],det(2,n)),det(3,n-2)+a[1]+a[n]));
return 0;
}