Cod sursa(job #2064142)

Utilizator patcasrarespatcas rares danut patcasrares Data 11 noiembrie 2017 20:42:54
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#include<iostream>
#define DN 100005
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,a[DN],r[3][DN],ma;
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    if(n==2)
    {
        fout<<a[1]+a[2];
        return 0;
    }
    r[0][3]=a[1]+a[2];
    ma=a[1]+a[2];
    for(int i=4;i<=n;i++)
    {
        r[0][i]=max(r[0][i],r[0][i-1]);
        if(i+2<=n)
            r[0][i+2]=r[0][i-1]+a[i]+a[i+1];
    }
    ma=max(ma,r[0][n]);
    r[1][2]=a[1]+a[n];
    for(int i=3;i<n;i++)
    {
        r[1][i]=max(r[1][i],r[1][i-1]);
        if(i+2<=n-1)
            r[1][i+2]=r[1][i-1]+a[i]+a[i+1];
    }
    ma=max(ma,r[1][n-1]);
    r[2][1]=a[n]+a[n-1];
    for(int i=2;i<=n-2;i++)
    {
        r[2][i]=max(r[2][i],r[2][i-1]);
        if(i+2<=n-2)
            r[2][i+2]=r[2][i-1]+a[i]+a[i+1];
    }
    ma=max(ma,r[2][n-2]);
    fout<<ma;
}