Cod sursa(job #49650)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 6 aprilie 2007 10:47:31
Problema Oo Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
/* Ivan Nicolae - Bucuresti */
#include <stdio.h>
#include <string.h>

#define NMAX 100000
#define Infinity 0x3f3f3f3f
#define max2(a,b) ((a>b) ? (a) : (b))
#define max3(a,b,c) (max2(max2(a,b),c))

int i,j,n,m,A[NMAX+2],S[NMAX+2];

void ReadData(void)
{
 freopen("oo.in","r",stdin);
 scanf("%d",&n); int i;
 for (i=1;i<=n;i++)
    scanf("%d",&A[i]);
 fclose(stdin);
}

int GetSum(int li, int ls)
{
 int i,maxim=0;
 memset(S,0,sizeof(S));
 for (i=li;i<=ls;i++)
    {
     S[i]=(A[i]+A[i-1]) + maxim;
     if (S[i-2] > maxim)
       maxim=S[i-2];
    }
 int rez=-Infinity;
 for (i=li;i<=ls;i++)
    if (S[i] > rez)
      rez=S[i];
 return rez;
}

void PrintData(int s1,int s2,int s3)
{
 freopen("oo.out","w",stdout);
 printf("%d",max3(s1,s2,s3));
 fclose(stdout);
}

int main()
{
 ReadData();
 int s1=GetSum(3,n-2);// + (A[1]+A[n]);
 int s2=GetSum(1,n-1);// + (A[1]+A[2]);
 int s3=GetSum(3,n);// + (A[n]+A[n-1]);
 PrintData(s1,s2,s3);
 
 return 0;
}