Cod sursa(job #1524448)

Utilizator ciocan_catalinCiocan Catalin - Iulian ciocan_catalin Data 14 noiembrie 2015 09:07:53
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
#define nmax 100000

using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,d1[nmax+5],d2[nmax+5],d3[nmax+5],a[nmax+5];


void Build()
{
    int i,s,s1,s2,s3;
    d1[2] = a[1]+a[2];
    for(i=5;i<n;i++)
        d1[i] = a[i]+a[i-1]+max(d1[i-3],max(d1[i-4],d1[i-5]));
    d2[1] = a[1]+a[n];
    d2[4] = a[4]+a[3]+d2[1];
    for(i=5;i<n-1;i++)
        d2[i] = a[i]+a[i-1]+max(d2[i-3],max(d2[i-4],d2[i-5]));
    d3[n] = a[n]+a[n-1];
    d3[3] = a[3]+a[2]+d3[n];
    d3[4] = a[4]+a[3]+d3[n];
    for(i=5;i<n-2;i++)
        d3[i] = a[i]+a[i-1]+max(d3[i-3],max(d3[i-4],d3[i-5]));
    s1 = max(d1[n-1],max(d1[n-2],d1[n-3]));
    s2 = max(d2[n-2],max(d2[n-3],d2[n-4]));
    s3 = max(d3[n-3],max(d3[n-4],d3[n-5]));
    s = max(s1,max(s2,s3));
    fout<<s<<"\n";
}

int main()
{
    int i;
    fin>>n;
    for(i=1;i<=n;i++) fin>>a[i];
    Build();
    fout.close();
    return 0;
}