Cod sursa(job #58481)

Utilizator crawlerPuni Andrei Paul crawler Data 5 mai 2007 23:08:35
Problema Oo Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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,tmp, sol = 0, fs = 1;

  scanf("%d", &n);

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

  #define calc1                    \
  max = 0;                         \
  x[fs+1] = v[fs] + v[fs+1];       \
  x[fs+2] = v[fs+1] + v[fs+2];     \
  for(i=fs+3;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   --fs;   v[0] = v[n]; --n; calc1;  ++fs;  ++n
  #define calc3   reverse(v+1,v+n); calc1

  calc1;calc2;calc3;

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

  return 0;
 }