Pagini recente » Cod sursa (job #1727834) | Cod sursa (job #1955983) | Borderou de evaluare (job #1004057) | Cod sursa (job #2483911) | Cod sursa (job #58507)
Cod sursa(job #58507)
#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, poz = 0;
#define dim 10000
char buf[dim];
fread(buf,1,dim,stdin);
#define cit(x) \
{ \
x = 0; \
while(buf[poz] < '0') \
{ \
++poz; \
if(poz == dim) \
fread(buf,1,dim,stdin), poz = 0; \
} \
while(buf[poz] >= '0') \
{ \
x = x*10 + buf[poz] - '0'; \
if(++poz == dim) \
fread(buf,1,dim,stdin), poz = 0; \
} \
}
cit(n)
for(i=1;i<=n;++i)
cit(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+1,v+n); calc1; calc2
calc1;calc2;calc3;
printf("%d\n", sol);
return 0;
}