Cod sursa(job #40595)

Utilizator webspiderDumitru Bogdan webspider Data 27 martie 2007 15:40:50
Problema Oo Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>
#include <iostream>

using namespace std;

int sir[100001];
int din[100001];
int maxm;
int n;

int main()
{
	int i,j;

	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);

	scanf("%d\n", &n);
	for ( i = 1; i <= n; i++ )
		scanf("%d ", &sir[i] );

	// Iau prima pereche
	
	din[1] = sir[1] + sir[2];

	for ( i = 4; i < n-1; i++ )
	{
		for ( j = 3; j <= 5; j++ )
			if ( i - j > 0 )
				din[i] = max( din[i], sir[i]+sir[i+1]+din[i-j] );
		if ( din[i] > maxm ) maxm = din[i];
	}

	// Iau a2a pereche
	
	din[1] = 0;
	din[2] = sir[2] + sir[3];

	for ( i = 5; i <= n; i++ )
	{
		din[i] = sir[i]+sir[i+1];
		if ( i == n ) din[i] = sir[i] + sir[1];
		for ( j = 3; j <= 5; j++ )
			if ( i - j > 0 )
				din[i] = max( din[i], sir[i]+sir[i+1]+din[i-j] );
		if ( din[i] > maxm ) maxm = din[i];
	}
		
	// Iau a3a pereche
	
	din[1] = din[2] = 0;
	din[3] = sir[3]+sir[4];
	for ( i = 6; i <= n; i++ )
	{
		din[i] = sir[i]+sir[i+1];
		if ( i == n ) din[i] = sir[i] + sir[1];

		for ( j = 3; j <= 5; j++ )
			if ( i - j > 0 )
				din[i] = max( din[i], sir[i]+sir[i+1]+din[i-j] );
		if ( din[i] > maxm ) maxm = din[i];
	}

	printf("%d\n", maxm );

	fclose(stdin);
	fclose(stdout);

	return 0;
}