Cod sursa(job #368231)

Utilizator Addy.Adrian Draghici Addy. Data 24 noiembrie 2009 11:00:46
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <string.h>
#define Nmax 100003

int v[Nmax], S[Nmax];
int n, i, sol;

int max(int a, int b) {
	return a > b ? a : b;
}

int main() {
	
	FILE *f = fopen("oo.in", "r");
	FILE *g = fopen("oo.out", "w");
	
	fscanf(f, "%d", &n);
	for (i = 1; i <= n; i++)
		fscanf(f, "%d", &v[i]);
	
	S[2] = v[1] + v[2];
	S[3] = S[2], S[4] = S[2];
	for (i = 5; i <= n - 1; i++)
		S[i] = max(v[i]+v[i-1]+S[i-3], S[i-1]);
	if (S[n-1] > sol)
		sol = S[n-1];
	
	memset(S, 0, sizeof(S));
	S[3] = v[2] + v[3];
	S[4] = S[3], S[5] = S[3];
	for (i = 6; i <= n; i++)
		S[i] = max(v[i]+v[i-1]+S[i-3], S[i-1]);
	if (S[n] > sol)
		sol = S[n];
	
	memset(S, 0, sizeof(S));
	S[1] = v[1] + v[n];
	S[2] = S[1], S[3] = S[1];
	for (i = 4; i <= n-2; i++)
		S[i] = max(v[i]+v[i-1]+S[i-3], S[i-1]);
	if (S[n-2] > sol)
		sol = S[n-2];
	
	fprintf(g, "%d", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}