Pagini recente » Istoria paginii runda/cel_mai_mare_olimpicar. | Cod sursa (job #1995749) | Cod sursa (job #2191356) | Istoria paginii utilizator/mihaipescaru | Cod sursa (job #543192)
Cod sursa(job #543192)
# include <cstdio>
const char *FIN = "oo.in", *FOU = "oo.out" ;
const int MAX = 100005 ;
int V[MAX], dp[MAX] ;
int N ;
inline int max ( int A, int B ) {
return ( A > B ? A : B ) ;
}
inline int poz ( int X ) {
dp[1] = ( X == 1 ) ? V[1] + V[N] : 0 ;
dp[2] = ( X == 3 ) ? 0 : max ( V[1] + V[2], dp[1] ) ;
for ( int i = 3; i <= N + X - 3; ++i ) {
dp[i] = max ( dp[i - 1], dp[i - 3] + V[i] + V[i - 1] ) ;
}
return dp[N + X - 3] ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
scanf ( "%d", &N ) ;
for ( int i = 1; i <= N; ++i ) {
scanf ( "%d", V + i ) ;
}
fprintf ( fopen ( FOU, "w" ) , "%d", max ( poz ( 1 ), max ( poz ( 2 ) , poz ( 3 ) ) ) ) ;
}