Cod sursa(job #1770152)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 3 octombrie 2016 20:14:35
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <iostream>

using namespace std;
int v[100001],d1[100001],d2[100001],d3[100001];
int main()
{
    FILE *fin=fopen ("oo.in","r");
    FILE *fout=fopen ("oo.out","w");
    int n,i,maxi,m1,m2,m3;
    fscanf (fin,"%d",&n);
    for (i=1;i<=n;i++)
        fscanf (fin,"%d",&v[i]);
    m1=d1[1]=v[n]+v[1];
    m2=d2[2]=v[1]+v[2];
    m3=d3[3]=v[2]+v[3];
    // exista 3 moduri de a incepe
    for (i=3;i<=n;i++){
        if (i<=n-2 && i>3){
            d1[i]=max(m1,d1[i-3])+v[i]+v[i-1];
            m1=max(m1,d1[i-3]);
        }
        if (i>4 && i<n){
            d2[i]=max(m2,d2[i-3])+v[i]+v[i-1];
            m2=max(m2,d2[i-3]);
        }
        if (i>5 && i<=n){
            d3[i]=max(m3,d3[i-3])+v[i]+v[i-1];
            m3=max(m3,d3[i-3]);
        }
        maxi=max(max(d1[i],d2[i]),d3[i]);
    }

    fprintf (fout,"%d ",maxi);
    return 0;
}