Cod sursa(job #1276326)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 26 noiembrie 2014 10:51:19
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
using namespace std;
int n, i, a, b, c, maxim;
int v[100001], w1[100001], w2[100001], w3[100001];
ifstream fin("oo.in");
ofstream fout("oo.out");
int main(){
	fin>> n;
	for(i = 1; i <= n; i++){
		fin>> v[i];
	}
	w1[2] = v[1] + v[2];
	if(w1[2] < v[2] + v[3]){
		w1[3] = v[2] + v[3];
	}
	else{
		w1[3] = w1[2];
	}
	for(i = 4; i < n; i++){
		if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
			w1[i] = w1[i-3] + v[i-1] + v[i];
		}
		else{
			w1[i] = w1[i-1];
		}
	}
	a = w1[n-1];
	w2[3] = v[2] + v[3];
	if(w2[3] < v[3] + v[4]){
		w2[4] = v[3] + v[4];
	}
	else{
		w2[4] = w2[3];
	}
	for(i = 5; i <= n; i++){
		if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
			w1[i] = w1[i-3] + v[i-1] + v[i];
		}
		else{
			w1[i] = w1[i-1];
		}
	}
	b = w2[n];
	w3[1]= v[n] + v[1];
	if(w3[1] < v[1] + v[2]){
		w3[2] = v[1] + v[2];	
	}
	else{
		w3[2] = w3[1];
	}
	for(i = 3; i < n - 1; i++){
		if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
			w1[i] = w1[i-3] + v[i-1] + v[i];
		}
		else{
			w1[i] = w1[i-1];
		}
	}
	c = w3[n-2];
	maxim = a;
	if(b > maxim){
		maxim = b;
	}
	if(c > maxim){
		maxim = c;
	}
	fout<< maxim;
	return 0;
}