Cod sursa(job #589989)

Utilizator maritimCristian Lambru maritim Data 14 mai 2011 21:00:58
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#include<vector>

int N;
int A[100100];
int B[100100];
int a;
int MAX;

#define B (B + 10)

void solve(int a,int b)
{
	for(int i=1;i<=N;i++)
		B[i] = 0;
	int c;
	if(b == N)
		B[N] += A[1];
	for(int i=a;i<=b;i++)
		B[i] += A[i+1]+A[i];
	c = 0;
	for(int i=a;i<=b;i++)
	{
		if(c<B[i-3])
			c = B[i-3];
		B[i] = B[i] + c;
	}
	for(int i=b-3;i<=b;i++)
		if(c<B[i])
			c = B[i];
	if(MAX<c)
		MAX = c;
}

int main()
{
	FILE *f = fopen("oo.in","r");
	FILE *g = fopen("oo.out","w");
	
	fscanf(f,"%d ",&N);
	for(int i=1;i<=N;i++)
		fscanf(f,"%d ",&A[i]);
	solve(1,N-2);
	solve(2,N-1);
	solve(3,N);
	fprintf(g,"%d ",MAX);
	
	fclose(g);
	fclose(f);
	return 0;
}