Pagini recente » Cod sursa (job #2677301) | Cod sursa (job #2190203) | Cod sursa (job #3222975) | Cod sursa (job #2164782) | Cod sursa (job #2633790)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin( "oo.in" );
ofstream fout( "oo.out" );
int d[100001];
int v[100001];
int processDP( int st, int dr ) {
int r;
d[st] = 0;
d[st + 1] = v[st] + v[st + 1];
for ( int i = st + 2; i <= dr; ++i ) {
if ( i - 3 >= st ) {
d[i] = max( d[i - 1], d[i - 3] + v[i] + v[i - 1] );
} else {
d[i] = max( d[i - 1], v[i] + v[i - 1] );
}
}
r = d[dr];
return r;
}
int main() {
int n, i;
fin >> n;
for ( i = 1; i <= n; ++i ) {
fin >> v[i];
}
v[n + 1] = v[1];
fout << max({ processDP( 1, n - 1 ), processDP( 2, n ), processDP( 3, n + 1 ) });
fin.close();
fout.close();
return 0;
}