Cod sursa(job #1947179)

Utilizator vnedelcuVictor Andrei Nedelcu vnedelcu Data 30 martie 2017 20:03:20
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

const int nmax=100001;
int v[nmax];
int a[nmax];

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

int main()
{
    FILE *f;
    int n,i,mx,mc;

    f=fopen("oo.in","r");
    fscanf(f,"%d",&n);
    for (i=1; i<=n; i++)
        fscanf(f,"%d",&v[i]);
    fclose(f);

    mx=0;
    mc=v[1]+v[2];
    a[4]=v[4];
    for (i=5; i<n-1; i++)
        a[i]=max(a[i-1],v[i]+v[i-1]+a[i-4]);
    mc+=a[n-2];
    if (mc > mx)
        mx=mc;

    mc=v[1]+v[n];
    a[3]=v[3];
    for (i=4; i<n-2; i++)
        a[i]=max(a[i-1],v[i]+v[i-1]+a[i-4]);
    mc+=a[n-3];
    if (mc > mx)
        mx=mc;

    mc=v[2]+v[3];
    a[5]=v[5];
    for (i=6; i<=n; i++)
        a[i]=max(a[i-1],v[i]+v[i-1]+a[i-4]);
    mc+=a[n];
    if (mc > mx)
        mx=mc;

    f=fopen("oo.out","w");
    fprintf(f,"%d",mx);
    fclose(f);
}