Pagini recente » Cod sursa (job #259298) | Cod sursa (job #3129017) | Cod sursa (job #3218180) | Cod sursa (job #887186) | Cod sursa (job #2118304)
#include <bits/stdc++.h>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
int n;
int v[100005], d[100005];
int maxim1, maxim2, maxim3;
int main()
{
in>>n;
for( int i = 1; i <= n; i++ )
in>>v[i];
/// NU LUAM 1 SI NICI N
d[1] = 0;
d[2] = v[1] + v[2];
d[3] = max( v[1] + v[2], v[2] + v[3] );
for( int i = 4; i <= n; i++ )
if( d[i - 1] <= v[i] + v[i - 1] + d[i - 3] )
d[i] = v[i] + v[i - 1] + d[i - 3];
else
d[i] = d[i - 1];
maxim1 = d[n - 1];
/// LUAM 1 SI N
d[1] = v[1] + v[n];
d[2] = max(v[n] + v[1], v[1] + v[2]);
d[3] = max( v[3] + v[4], d[2] );
for( int i = 4; i <= n; i++ )
if( d[i - 1] <= v[i] + v[i - 1] + d[i - 3] )
d[i] = v[i] + v[i - 1] + d[i - 3];
else
d[i] = d[i - 1];
maxim2 = d[n - 2];
/// LUAM N SI NU 1
d[1] = 0;
d[2] = 0;
d[3] = v[2] + v[3];
for( int i = 4; i <= n; i++ )
if( d[i - 1] <= v[i] + v[i - 1] + d[i - 3] )
d[i] = v[i] + v[i - 1] + d[i - 3];
else
d[i] = d[i - 1];
maxim3 = d[n];
out<<max( maxim1, max(maxim2, maxim3) );
return 0;
}