Cod sursa(job #158110)

Utilizator mirelusiVoinea Mirela mirelusi Data 13 martie 2008 14:14:11
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <mem.h>

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

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()
{   int i;
		freopen(in,"r",stdin);
		freopen(out,"w",stdout);

		scanf("%d", &N);
		for (i = 1; i <= N; i++ )
				scanf("%d", &C[i]);

		A1[2] = A1[3] = A1[4] = C[1] + C[2];
    for (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 (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 (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\n", maxim);
		return 0;
}