Cod sursa(job #137029)

Utilizator marinMari n marin Data 16 februarie 2008 19:19:14
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<stdio.h>
#define DIM 100200

void citire();
void rezolvare();

int a[DIM],n,w[DIM];

int main(void)
{
  freopen("oo.in", "r", stdin);
  freopen("oo.out", "w", stdout);
  citire();
  rezolvare();
  return 0;
}

void citire()
{
  int i;
  scanf("%d ",&n);
  for(i=0;i<n;i++)
    scanf("%d ",a[i]);

}

void rezolvare()
{
  int i,ka,max;
  max=0;
  if(n==2){
    printf("%d\n",a[0]+a[1]);
    return;
  }
  w[0]=0;
  for(i=3;i<=n;i++){
    w[i] = w[i-1];
    ka = w[i-3];
    if(w[i]<ka+a[i-1]+a[i-2])
      w[i]=ka+a[i-1]+a[i-2];
  }
  if(w[n]>max)
    max=w[n];
   w[0] = 0;
   for(i = 2; i < n; i++){
     w[i]=w[i-1];
     if(i==2)
       ka=0;
     else ka=w[i-3];
     if(w[i]<ka+a[i-1]+a[i-2])
       w[i]=ka+a[i-1]+a[i-2];
   }
   if(w[n-1]>max) max=w[n-1];
   w[1]=a[0]+a[n-1];
   for(i=4;i<n-1;i++){
     w[i]=w[i-1];
     ka=w[i-3];
     if(w[i]<ka+a[i-1]+a[i-2])
       w[i]=ka+a[i-1]+a[i-2];
   }
   if(w[n-2]>max)
     max=w[n-2];
   printf("%d\n",max);
}