Cod sursa(job #37173)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 24 martie 2007 17:40:45
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include<stdio.h>
long int n,oo1,oo2,oo3,oo4,oo5,oo6,sol,ou[100010],i,s[100010];
int main()
{
	FILE *f,*g;
	f=fopen("oo.in","r");
	g=fopen("oo.out","w");
	fscanf(f,"%ld",&n);
	fscanf(f,"%ld%ld",&oo1,&oo2);
	if(n==2){sol=oo1+oo2;
		 fprintf(g,"%ld\n",sol);
		 fcloseall();return 0;}
	if(n==3){fscanf(f,"%ld",&oo3);
		 sol=oo1+oo2;
		 if(oo2+oo3>sol)sol=oo2+oo3;
		 if(oo3+oo1>sol)sol=oo3+oo1;
		 fprintf(g,"%ld\n",sol);
		 fcloseall();return 0;}
	if(n==4){fscanf(f,"%ld%ld",&oo3,&oo4);
		 sol=oo1+oo2;
		 if(oo2+oo3>sol)sol=oo2+oo3;
		 if(oo3+oo4>sol)sol=oo3+oo4;
		 if(oo4+oo1>sol)sol=oo4+oo1;
		 fprintf(g,"%ld\n",sol);
		 fcloseall();return 0;}
	if(n==5){fscanf(f,"%ld%ld%ld",&oo3,&oo4,&oo5);
		 sol=oo1+oo2;
		 if(oo2+oo3>sol)sol=oo2+oo3;
		 if(oo3+oo4>sol)sol=oo3+oo4;
		 if(oo4+oo5>sol)sol=oo4+oo5;
		 if(oo5+oo1>sol)sol=oo5+oo1;
		 fprintf(g,"%ld\n",sol);
		 fcloseall();return 0;}
	if(n==6){fscanf(f,"%ld%ld%ld%ld",&oo3,&oo4,&oo5,&oo6);
		 sol=oo1+oo2+oo4+oo5;
		 if(oo2+oo3+oo5+oo6>sol)sol=oo2+oo3+oo5+oo6;
		 if(oo3+oo4+oo6+oo1>sol)sol=oo3+oo4+oo6+oo1;
		 fprintf(g,"%ld\n",sol);
		 fcloseall();return 0;}
	ou[1]=oo1;ou[2]=oo2;
	for(i=3;i<=n;i++)fscanf(f,"%ld",&ou[i]);ou[n+1]=oo1;oo1=ou[n];
	for(i=n+1;i>=2;i--)ou[i]+=ou[i-1];ou[1]+=oo1;
	s[2]=ou[2];s[3]=ou[2];s[4]=ou[2];
	for(i=5;i<=n-1;i++) { s[i]=s[i-3]+ou[i];
			      if(s[i]<s[i-1])s[i]=s[i-1];
			      if(s[i]<s[i-2])s[i]=s[i-2];}
	if(sol<s[n-1])sol=s[n-1];
	s[3]=ou[3];s[4]=ou[3];s[5]=ou[3];
	for(i=6;i<=n;i++) { s[i]=s[i-3]+ou[i];
			      if(s[i]<s[i-1])s[i]=s[i-1];
			      if(s[i]<s[i-2])s[i]=s[i-2];}
	if(sol<s[n])sol=s[n];
	s[4]=ou[4];s[5]=ou[4];s[6]=ou[4];
	for(i=7;i<=n+1;i++) { s[i]=s[i-3]+ou[i];
			      if(s[i]<s[i-1])s[i]=s[i-1];
			      if(s[i]<s[i-2])s[i]=s[i-2];}
	if(sol<s[n+1])sol=s[n+1];
	fprintf(g,"%ld\n",sol);
	fcloseall();return 0;
}