Pagini recente » Cod sursa (job #2597337) | Cod sursa (job #1240730) | Cod sursa (job #1685571) | Cod sursa (job #1113412) | Cod sursa (job #1720725)
#include <cstdio>
#include <algorithm>
#define MAX 6000000
#define INF 2000000005
using namespace std;
char f[MAX];
int pos=0,N,v[100005],Max=0,lenght=3;
struct circle
{
int val,val2;
}dp[100005];
void r(int &nr)
{
int sign=0;
nr=0;
while(f[pos]<'0'||f[pos]>'9')
{
if(f[pos]=='-')
sign=1;
pos++;
}
while(f[pos]>='0'&&f[pos]<='9')
nr=nr*10+f[pos++]-'0';
if(sign==1)
nr=-nr;
}
int main()
{
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
fread(f,1,MAX,stdin);
r(N);
for(int i=1;i<=N;i++)
r(v[i]);
dp[N-1].val=v[N]+v[N-1];
dp[N-2].val=dp[N-2].val2=v[N-2]+v[N-1];
dp[N-3].val=dp[N-3].val2=v[N-2]+v[N-3];
for(int i=N-4;i>1;i--)
{
dp[i].val=dp[i+3].val+v[i]+v[i+1];
if(dp[i].val<dp[i+1].val)
dp[i].val=dp[i+1].val;
if(dp[i].val>Max)
Max=dp[i].val;
}
for(int i=N-4;i>0;i--)
{
dp[i].val2=dp[i+3].val2+v[i]+v[i+1];
if(dp[i].val2<dp[i+1].val2)
dp[i].val2=dp[i+1].val2;
if(dp[i].val2>Max)
Max=dp[i].val2;
}
printf("%d",Max);
return 0;
}