Pagini recente » Cod sursa (job #2543813) | Cod sursa (job #2987453) | Cod sursa (job #476804) | Cod sursa (job #2767586) | Cod sursa (job #2727463)
#include <fstream>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
#define NMAX 100005
int n, v[NMAX], rez, dp[NMAX];
void citire() {
f >> n;
for (int i = 1; i <= n; ++i)
f >> v[i];
}
void caz1() {
//Se iau sectoarele 1 si 2
dp[1] = 0;
dp[2] = dp[3] = dp[4] = v[1] + v[2];
for (int i = 5; i < n; ++i)
dp[i] = max(dp[i - 1], v[i] + v[i - 1] + dp[i - 3]);
rez = dp[n - 1];
}
void caz2() {
//Se iau sectoarele n si 1
dp[1] = dp[2] = dp[3] = v[n] + v[1];
for (int i = 4; i < n - 1; ++i)
dp[i] = max(dp[i - 1], v[i] + v[i - 1] + dp[i - 3]);
rez = max(rez, dp[n - 2]);
}
void caz3() {
//Se iau sectoarele 2 si 3
dp[1] = dp[2] = 0;
dp[3] = dp[4] = dp[5] = v[2] + v[3];
for (int i = 6; i <= n; ++i)
dp[i] = max(dp[i - 1], v[i] + v[i - 1] + dp[i - 3]);
rez = max(rez, dp[n]);
}
int main() {
citire();
caz1();
caz2();
caz3();
g << rez;
return 0;
}