Cod sursa(job #32770)

Utilizator pocaituDavid si Goliat pocaitu Data 18 martie 2007 14:17:36
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<fstream.h>
#define nmax 100002
long v[nmax],n;
inline long max(long a, long b) {return a>b?a:b;}
void citire(); void afisare(long);long rezolva();

int main()
{citire();
 afisare(rezolva());


 return 0;
 }
void citire()
{long i;
 freopen("oo.in","r",stdin);
 scanf("%ld",&n);
 for(i=1;i<=n;i++)
  scanf("%ld",&v[i]);
 }
void afisare(long sol)
{freopen("oo.out","w",stdout);
 printf("%ld",sol);
 fclose(stdout);
 }
long rezolva()
{long j,solutie,sol[nmax];
 memset(sol,0,sizeof(sol));
 //initializare();
 for(j=3;j<n;j++)
   if(j-3<0)
	 sol[j]=max(sol[j-1],sol[j-2]);
   else
	 sol[j]=max(max(sol[j-1],sol[j-2]),sol[j-3]+v[j]+v[j-1]);
 solutie=sol[n-1];

 memset(sol,0,sizeof(sol));
 for(j=3;j<=n;j++)
   sol[j]=max(max(sol[j-1],sol[j-2]),sol[j-3]+v[j]+v[j-1]);
 return max(solutie,sol[n]);

 }