Pagini recente » Cod sursa (job #2307305) | Cod sursa (job #1529604) | Cod sursa (job #1894929) | Cod sursa (job #2607545) | Cod sursa (job #464253)
Cod sursa(job #464253)
#include<fstream>
#include<algorithm>
using namespace std;
int n, a[100016], mn[3][3][100016], mx;
int main()
{
ifstream fin("oo.in");
ofstream fout("oo.out");
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> a[i];
a[0] = a[n];
a[n + 1] = a[0];
for (int k = 0; k < 3; ++k)
{
int p1, p2;
switch (k)
{
case 0: // putem alege 1, 2 => nu putem alege n - 1, n
p1 = 1;
p2 = n - 2;
break;
case 1: // nu putem alege 1, 2 => putem alege n - 1, n
p1 = 2;
p2 = n - 1;
break;
case 3: // putem alege n, 1 => nu putem alege n - 2, n - 1 | 2, 3
p1 = 3;
p2 = n;
break;
}
for (int i = p1; i <= p2; ++i)
{
mn[k][0][i] = max(mn[k][0][i - 1], mn[k][2][i - 1]);
mn[k][1][i] = mn[k][0][i - 1] + a[i] + a[i + 1];
mn[k][2][i] = mn[k][1][i - 1];
mx = max(mx, mn[k][0][i]);
mx = max(mx, mn[k][1][i]);
mx = max(mx, mn[k][2][i]);
}
}
fout << mx;
}