Pagini recente » Cod sursa (job #210982) | Cod sursa (job #410466) | Cod sursa (job #1844215) | Cod sursa (job #2020304) | Cod sursa (job #871228)
Cod sursa(job #871228)
#include <fstream>
#include <cstring>
#define maxim(a, b) ((a > b) ? a : b)
using namespace std;
const char iname[] = "oo.in";
const char oname[] = "oo.out";
ifstream fin(iname);
ofstream fout(oname);
int N, i, j, ANS;
int v[ 100004 ];
int dp[ 100004 ];
int DP(int in, int sf)
{
int ans = 0;
for (i = in; i <= sf; ++i)
{
for (j = 3; j <= 5; ++j)
if (i > j) dp[i] = maxim(dp[i], dp[i-j]);
dp[i] += (v[i] + v[i-1]);
ans = maxim(ans, dp[i]);
}
if (in == 4 && sf == N-2)
ans += (v[1] + v[N]);
memset(dp,0,sizeof(dp));
return ans;
}
int main()
{
fin >> N;
for (i = 1; i <= N; ++i) fin >> v[i];
ANS = maxim(DP(2, N-1), maxim(DP(4, N-2),DP(3, N)));
fout << ANS << '\n';
return 0;
}