Pagini recente » Cod sursa (job #502882) | Cod sursa (job #949490) | Cod sursa (job #1361354) | Cod sursa (job #264205) | Cod sursa (job #1895141)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
int n, D[100005],DP[100005];
void read(){
in>>n;
for(int i=1;i<=n;i++)
in>>D[i];
}
void solve(){
int rmax=0;
//! 1 cu n
DP[2]=DP[1]=D[n]+D[1];
for(int i=3;i<n-1;i++){
DP[i]=max(DP[i-3]+D[i-1]+D[i], DP[i-1]);
}
rmax=max(rmax, DP[n-2]);
memset(DP,0,sizeof(DP));
//! 1 cu 2
DP[2]=D[1]+D[2];
for(int i=3;i<n;i++){
DP[i]=max(DP[i-3]+D[i-1]+D[i], DP[i-1]);
}
rmax=max(rmax, DP[n-1]);
memset(DP,0,sizeof(DP));
//! 1 nu se ia
DP[1]=0;
for(int i=3;i<=n;i++){
DP[i]=max(DP[i-3]+D[i-1]+D[i], DP[i-1]);
}
rmax=max(rmax, DP[n]);
out<<rmax;
}
int main(){
read();
solve();
return 0;
}