Cod sursa(job #58498)

Utilizator crawlerPuni Andrei Paul crawler Data 5 mai 2007 23:37:11
Problema Oo Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int v[100100];
int x[100100];


int main()
 {
  freopen("oo.in","r",stdin);
  freopen("oo.out","w",stdout);

  int n,i,max, sol = 0, fs = 1;

  scanf("%d", &n);

  for(i=1;i<=n;++i)
   scanf("%d", v+i);

  #define calc1                    \
  max = 0;                         \
  x[fs] = 0;                       \
  x[fs+1] = v[fs+1] + v[fs];       \
  for(i=fs+2;i<n;++i)              \
   {                               \
    x[i] = max + v[i-1] + v[i];    \
    if(x[i-2] > max)               \
     max = x[i-2];                 \
   }                               \
                                   \
  if(max < x[n-1])                 \
    max = x[n-1];                  \
                                   \
  if(sol < max)                    \
   sol = max
   
  #define calc2   v[--fs] = v[n]; --n; calc1;  ++fs;  ++n
  #define calc3   reverse(v,v+n); calc1

  calc1;
  calc2;
  calc3;

  printf("%d\n", sol);

  return 0;
 }