Pagini recente » Cod sursa (job #3123957) | Cod sursa (job #1257888) | Cod sursa (job #1103445) | Cod sursa (job #123938) | Cod sursa (job #1524448)
#include <bits/stdc++.h>
#define nmax 100000
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,d1[nmax+5],d2[nmax+5],d3[nmax+5],a[nmax+5];
void Build()
{
int i,s,s1,s2,s3;
d1[2] = a[1]+a[2];
for(i=5;i<n;i++)
d1[i] = a[i]+a[i-1]+max(d1[i-3],max(d1[i-4],d1[i-5]));
d2[1] = a[1]+a[n];
d2[4] = a[4]+a[3]+d2[1];
for(i=5;i<n-1;i++)
d2[i] = a[i]+a[i-1]+max(d2[i-3],max(d2[i-4],d2[i-5]));
d3[n] = a[n]+a[n-1];
d3[3] = a[3]+a[2]+d3[n];
d3[4] = a[4]+a[3]+d3[n];
for(i=5;i<n-2;i++)
d3[i] = a[i]+a[i-1]+max(d3[i-3],max(d3[i-4],d3[i-5]));
s1 = max(d1[n-1],max(d1[n-2],d1[n-3]));
s2 = max(d2[n-2],max(d2[n-3],d2[n-4]));
s3 = max(d3[n-3],max(d3[n-4],d3[n-5]));
s = max(s1,max(s2,s3));
fout<<s<<"\n";
}
int main()
{
int i;
fin>>n;
for(i=1;i<=n;i++) fin>>a[i];
Build();
fout.close();
return 0;
}