Pagini recente » Cod sursa (job #2825093) | Cod sursa (job #576308) | Cod sursa (job #2589823) | Cod sursa (job #763703) | Cod sursa (job #3180669)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
int compute(const vector<int>& v){
const int n = v.size() - 1;
vector<int> dp(n + 1);
dp[2] = v[1] + v[2];
for(int i=3; i<n; i++)
dp[i] = max(dp[i-1], dp[i-3] + v[i] + v[i-1]);
int sol = dp[n - 1];
dp.clear();
dp.resize(n + 1);
for(int i=3; i<=n; i++)
dp[i] = max(dp[i-1], dp[i-3] + v[i] + v[i-1]);
return max(sol, dp[n]);
}
int main(){
int n;
cin>>n;
vector<int> v(n+1);
for(int i=1; i<=n; i++)
cin>>v[i];
int sol = compute(v);
v.push_back(v[1]);
v.erase(v.begin() + 1);
v.erase(v.begin() + 1);
sol = max(sol, compute(v));
cout<<sol;
return 0;
}