Cod sursa(job #129486)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 29 ianuarie 2008 16:27:45
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
  #include<stdio.h>  
    
  long  n, oo[122000], r1, r2, r3;  
  long  a[122000], rez;  
  long  max(long  x,long  y)  
  {  
    return x>y?x:y;  
  }  
    
  int main()  
  {  
    long  i;  
    freopen("oo.in","r",stdin);  
    scanf("%ld",&n);  
    for (i = 1; i <= n; i++) scanf("%ld",oo+i);  
    if (n == 2) rez = oo[0] + oo[1];  
    
    else   
    {  
        a[2] = oo[1] + oo[2];  
        
		for (i = 3; i <= n; i++)  
            a[i] = max(a[i-1],  oo[i] + oo[i-1] + a[i-3]);  
          
        r1 = a[n - 1];  
    
        for (i = 0 ; i <= n; i++) a[i] = 0;  
      
        for (i = 3; i <= n; i++)  
			a[i] = max(a[i-1],  oo[i] + oo[i-1] + a[i-3]);   
        r2 = a[n];  
    
        for (i = 0 ; i <= n; i++) a[i] = 0;  
    
		a[1] = a[2] = oo[1] + oo[n];
        
        for (i = 3; i < n - 1; i++)  
            a[i] = max(a[i-1],  oo[i] + oo[i-1] + a[i-3]);  

        r3 = a[n - 2];  
    
        rez = max(max(r1,r2),r3);  
    }  
    
    freopen("oo.out","w",stdout);  
    printf("%ld\n",rez);  
    return 0;  
  }