Pagini recente » civilizatie | Cod sursa (job #668898) | Cod sursa (job #2769845) | Cod sursa (job #2642284) | Cod sursa (job #1558059)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
const int MAX = 100005;
int a[MAX];
int D[MAX];
int N;
int max1, max2, max3;
int maxim;
void Read();
void Solve();
int main()
{
Read();
Solve();
fin.close();
fout.close();
return 0;
}
void Read()
{
int i;
fin >> N;
for ( i = 1; i <= N; i++ )
{
fin >> a[i];
//cout << i << ' ' << a[i]; cin.get();
}
}
void Solve()
{
int i, j;
maxim = 0;
for ( i = 5; i < N; i++ )
{
D[i] = maxim + a[i] + a[i - 1];
maxim = max( maxim, D[i - 3] );
if ( D[i] > max1 ) max1 = D[i];
}
max1 += ( a[1] + a[2] );
memset( D, 0, sizeof(D) );
maxim = 0;
for ( i = 4; i < N - 1; i++ )
{
D[i] = maxim + a[i] + a[i - 1];
maxim = max( maxim, D[i - 3] );
if ( D[i] > max2 ) max2 = D[i];
}
max2 += ( a[1] + a[N] );
memset( D, 0, sizeof(D) );
maxim = 0;
for ( i = 6; i <= N; i++ )
{
D[i] = maxim + a[i] + a[i - 1];
maxim = max( maxim, D[i - 3] );
if ( D[i] > max3 ) max3 = D[i];
//cout << D[i]; cin.get();
}
max3 += ( a[2] + a[3] );
fout << max( max( max1, max2 ), max3 );
}