Cod sursa(job #1036770)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 19 noiembrie 2013 17:00:51
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;

ifstream is("oo.in");
ofstream os("oo.out");

int n, o[100005];
int d[100005];
int maxim;

int main()
{
    is >> n;
    for ( int i = 1; i <= n; ++i )
        is >> o[i];
    for ( int i = 5; i <= n - 1; ++i )
    {
        d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
        maxim = max(maxim, d[i] + o[1] + o[2]);
    }
    memset(d, 0, sizeof(d));
    for ( int i = 4; i <= n - 2; ++i )
    {
        d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
        maxim = max(maxim, d[i] + o[n] + o[1]);
    }
    memset(d, 0, sizeof(d));
    for ( int i = 3; i <= n - 3; ++i )
    {
        d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
        maxim = max(maxim, d[i] + o[n - 1] + o[n]);
    }
    memset(d, 0, sizeof(d));
    for ( int i = 3; i < n - 1; ++i )
    {
        d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
        maxim = max(maxim, d[i]);
    }
    os << maxim;
    is.close();
    os.close();
    return 0;
}