Pagini recente » Cod sursa (job #935499) | Cod sursa (job #94182) | Cod sursa (job #360925) | Cod sursa (job #1974636) | Cod sursa (job #2096906)
#include <fstream>
#define DIM 100002
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
int n, dp[DIM], v[DIM], maxim;
void reset(){
for(int i = 0; i <= n + 1; ++ i)
dp[i] = 0;
}
int main()
{
f>>n;
for(int i = 1; i <= n; ++ i)
f>>v[i];
//1//////////////////////////////
dp[1] = 0;
dp[n] = 0;
dp[2] = v[1] + v[2];
dp[3] = dp[2];
for(int i = 4; i <= n - 1; ++ i){
dp[i] = max(dp[i - 1], max(dp[i - 2], max(dp[i - 3] + v[i - 1] + v[i], dp[i - 4] + v[i - 1] + v[i])));
}
maxim = max(dp[n - 1], max(dp[n - 2], max(dp[n - 3], dp[n - 4])));
//2//////////////////////////////
reset();
dp[1] = v[n] + v[1];
dp[n] = 0;
dp[n - 1] = 0;
dp[2] = dp[1];
dp[3] = dp[1];
for(int i = 4; i < n - 1; ++ i){
dp[i] = max(dp[i - 1], max(dp[i - 2], max(dp[i - 3] + v[i - 1] + v[i], dp[i - 4] + v[i - 1] + v[i])));
}
maxim = max(maxim, max(dp[n - 1], max(dp[n - 2], max(dp[n - 3], dp[n - 4]))));
//3//////////////////////////////
reset();
dp[n - 1] = 0;
dp[n] = v[n - 1] + v[n];
dp[1] = dp[n];
dp[2] = dp[n];
dp[3] = dp[1] + v[3];
for(int i = 4; i <= n - 1; ++ i){
dp[i] = max(dp[i - 1], max(dp[i - 2], max(dp[i - 3] + v[i - 1] + v[i], dp[i - 4] + v[i - 1] + v[i])));
}
maxim = max(maxim, max(dp[n - 1], max(dp[n - 2], max(dp[n - 3], dp[n - 4]))));
g<<maxim;
return 0;
}