Cod sursa(job #168961)

Utilizator cos_minBondane Cosmin cos_min Data 31 martie 2008 21:53:10
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <fstream>
using namespace std;

#define in "oo.in"
#define out "oo.out"
#define dim 100001

inline int Maxim(int a, int b) {
       if ( a > b ) return a;
       return b;
}

int N, maxim=0;
int C[dim], A1[dim];

int main()
{
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    scanf("%d", &N);
    for ( int i = 1; i <= N; i++ )
        scanf("%d", &C[i]);
    
    A1[2] = A1[3] = A1[4] = C[1] + C[2];
    for ( int i = 5; i < N; i++ )
        A1[i] = Maxim( A1[i-1], C[i]+C[i-1]+A1[i-3] );
    
    maxim = Maxim( maxim, A1[N-1] );
    memset(A1,0,sizeof(A1));
    
    A1[3] = A1[4] = A1[5] = C[2] + C[3];
    for ( int i = 6; i <= N; i++ )
        A1[i] = Maxim ( A1[i-1], C[i]+C[i-1]+A1[i-3] );
    
    maxim = Maxim( maxim, A1[N] );
    memset(A1,0,sizeof(A1));
    
    A1[1] = A1[2] = A1[3] = C[1] + C[N];
    for ( int i = 4; i < N-1; i++ )
        A1[i] = Maxim( A1[i-1], C[i]+C[i-1]+A1[i-3] );
    
    maxim = Maxim( maxim, A1[N-2] );
    
    printf("%d", maxim);
}