Pagini recente » Cod sursa (job #806435) | Cod sursa (job #1909829) | Cod sursa (job #3160980) | Cod sursa (job #1387708) | Cod sursa (job #1526882)
#include <fstream>
#define nmax 100007
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, d1[nmax], d2[nmax], d3[nmax], a[nmax];
void Citire()
{
int i;
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
}
void Rezolva()
{
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()
{
Citire();
Rezolva();
fout.close();
return 0;
}