Cod sursa(job #227923)

Utilizator swift90Ionut Bogdanescu swift90 Data 5 decembrie 2008 22:05:16
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#define N 100100
int n,nr[N],s[N],sol;
inline int max(int a,int b){
	return a>b?a:b;
}
void s1(){
	for(int i=3;i<=n;++i)
		s[i]=max(s[i-1],nr[i]+nr[i-1]+s[i-3]);
	sol=s[n];
}
void s2(){
	s[4]=s[2]=s[3]=nr[1]+nr[2];
	for(int i=5;i<n;++i)
		s[i]=max(s[i-1],nr[i]+nr[i-1]+s[i-3]);
	sol=max(s[n],sol);
}
void s3(){
	s[1]=s[2]=s[3]=nr[1]+nr[n];
	for(int i=4;i<n-1;++i)
		s[i]=max(s[i-1],nr[i]+nr[i-1]+s[i-3]);
	sol=max(sol,s[n]);
}
int main(){
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);
	int i;
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&nr[i]);
	s1();
	s2();
	s3();
	printf("%d\n",sol);
	fclose(stdin);
	fclose(stdout);
	return 0;
}