Cod sursa(job #198174)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 9 iulie 2008 11:58:34
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <iostream>
#define vv 100001
#define max(a,b) ((a) > (b) ? (a) : (b))

using namespace std;

int v[3][vv],a[vv],n,maxim;

ifstream fin ("oo.in");
ofstream fout ("oo.out");

void Oo(int st, int dr)
{
    memset(v,0,sizeof(v));
    v[1][st]=a[st];
    v[2][st]=a[st]+a[st-1];
    for (int i=st+1; i<=dr; i++)
    {
        v[0][i]=max(v[0][i-1],v[2][i-1]);
        v[1][i]=v[0][i-1]+a[i];
        v[2][i]=v[1][i-1]+a[i];
    }
    if (max(v[0][dr],v[2][dr])>maxim)
        maxim=max(v[0][dr],v[2][dr]);
}

int main()
{
    fin >> n;
    for (int i=1; i<=n; i++)
        fin >> a[i];
    a[0]=a[n];
    maxim=0;
    Oo(1,n-2);
    Oo(2,n-1);
    Oo(3,n);
    fout << maxim << "\n";
    return 0;
}